문제

이전에 겪었던 문제가 발생했습니다.문제 해결 방법에 대한 참조를 찾을 수 없습니다.

여기에 문제가 있습니다.아래 코드를 사용하여 클라이언트 애플리케이션에 대한 app.config의 연결 문자열 섹션을 암호화합니다.

        config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
        If config.ConnectionStrings.SectionInformation.IsProtected = False Then
            config.ConnectionStrings.SectionInformation.ProtectSection(Nothing)

            ' We must save the changes to the configuration file.'
            config.Save(ConfigurationSaveMode.Modified, True)
        End If

문제는 영업사원이 휴가를 냈다는 것입니다.기존 노트북이 새 영업사원에게 전달되고 새 사용자의 로그인으로 이 작업을 시도하면 오류가 발생합니다.오류는 다음과 같습니다

Unhandled Exception: System.Configuration.ConfigurationErrorsException: 
An error occurred executing the configuration section handler for connectionStrings. ---> System.Configuration.ConfigurationErrorsException: Failed to encrypt the section 'connectionStrings' using provider 'RsaProtectedConfigurationProvider'. 
Error message from the provider: Object already exists.
---> System.Security.Cryptography.CryptographicException: Object already exists
도움이 되었습니까?

해결책 2

나는 나 자신에 대한 원래의 대답보다 더 우아한 해결책을 찾았습니다.방금 응용 프로그램을 설치하고 구성 파일 연결 문자열을 암호화한 사용자로 방금 로그인한 후 commadn 프롬프트에서 .net 프레임워크 디렉터리로 이동하여 실행했는지 확인했습니다.

aspnet_regiis -pa "NetFrameworkConfigurationKey" "{domain}\{user}"

이는 다른 사용자에게 RSA 암호화 키 컨테이너에 액세스할 수 있는 권한을 부여한 다음 다른 사용자에 대해 작동합니다.

이 문제를 우리 개발자 블로그에 게시했다고 생각했는데 여기서 발견했기 때문에 여기에 추가하고 싶었습니다. 따라서 다시 찾아봐야 할 경우를 대비해 여기에 있을 것입니다.이 스레드에도 개발 블로그 지점에 대한 링크를 추가할 예정입니다.

다른 팁

http://blogs.msdn.com/mosharaf/archive/2005/11/17/protectedConfiguration.aspx#1657603

복사해서 붙여넣으세요 :D

2007년 2월 12일 월요일 오전 12:15 Naica 작성

답장:보호된 구성을 사용하여 구성 파일 암호화

다음은 내 PC에서 두 섹션을 암호화한 다음 이를 WebServer에 배포하기 위해 수행한 모든 단계의 목록입니다.아마도 누군가에게 도움이 될 것입니다...:

  1. 머신 수준 RSA 키 컨테이너를 생성하려면

    aspnet_regiis -pc "DataProtectionConfigurationProviderKeys" -exp
    
  2. ConnectionStrings 섹션 앞에 web.config에 다음을 추가하십시오.

     <add name="DataProtectionConfigurationProvider"
    
          type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,
    
                   Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
    
                   processorArchitecture=MSIL"
    
          keyContainerName="DataProtectionConfigurationProviderKeys"
    
          useMachineContainer="true" />
    

    놓치지 마세요 <clear /> 위에서!여러 번 암호화/암호 해독을 할 때 중요

  3. Web.Config 파일 상단에 이 항목이 있는지 확인하세요.누락된 경우 추가하세요.

    <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
    
  4. VS에서 Web.Config 파일을 저장하고 닫습니다(매우 중요!)

  5. 명령 프롬프트(내 로컬 PC) 창에서 다음으로 이동합니다.

    C:\WINNT\Microsoft.NET\Framework\v2.0.50727

  6. 암호화:(앱의 실제 경로 변경을 주의하세요. 또는 -app 옵션을 사용하고 앱의 가상 디렉터리 이름을 지정하세요!내 PC에서 VS를 사용했기 때문에 다음 옵션을 선호했습니다.경로는 Web.config 파일의 경로입니다)

    aspnet_regiis -pef "connectionStrings" "c:\Bla\Bla\Bla" -prov "DataProtectionConfigurationProvider"

    aspnet_regiis -pef "system.web/membership" "c:\Bla\Bla\Bla" -prov "DataProtectionConfigurationProvider"

  7. 암호를 해독하려면(필요한 경우에만!):

    aspnet_regiis -pdf "connectionStrings" "c:\Bla\Bla\Bla"
    
    aspnet_regiis -pdf "system.web/membership" "c:\Bla\Bla\Bla"
    
  8. 키 컨테이너 삭제(필요한 경우에만!)

    aspnet_regiis -pz "DataProtectionConfigurationProviderKeys"
    
  9. 위의 키를 로컬 PC에서 WebServer(UAT 또는 프로덕션)로 내보내려면 xml 파일에 저장하세요.

    aspnet_regiis -px "DataProtectionConfigurationProviderKeys" \temp\mykeyfile.xml -pri
    
  10. WebServer 서버에서 키 컨테이너를 가져옵니다.

    aspnet_regiis -pi "DataProtectionConfigurationProviderKeys" \temp\mykeyfile.xml
    
  11. 웹 서버의 키에 대한 액세스 권한 부여

    aspnet_regiis -pa "DataProtectionConfigurationProviderKeys" "DOMAIN\User"
    

    IIS에서 ASP.NET 사용자를 확인하거나 다음을 사용하십시오.

    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name
    
  12. 제거 웹 서버의 키에 대한 액세스 권한 부여(필요한 경우에만!)

    aspnet_regiis -pr "DataProtectionConfigurationProviderKeys" "Domain\User"
    
  13. 암호화된 Web.config 파일을 복사하여 WebServer에 붙여넣습니다.

그래서 나는 그것을 작동하게 만들었습니다.

  1. 노트북에서 이전 사용자 계정을 제거했습니다.
  2. 섹션이 보호되지 않도록 app.config를 재설정하세요.
  3. 모든 사용자 컴퓨터 키에서 키 파일을 제거했습니다.
  4. 앱을 실행하고 섹션을 보호하도록 허용했습니다.

그러나 이 모든 것은 이 사용자에게 작동되도록 한 것뿐입니다.

이제 한 PC에서 여러 사용자가 애플리케이션을 사용할 수 있도록 섹션을 보호하기 위해 코드를 변경하려면 어떻게 해야 하는지 알아야 합니다.가상 PC가 여기 있습니다(내일부터 다음 수요일까지 휴가를 마치고 WDW로 갑니다)!

나는 이 RSA 암호화 유형에 대한 경험이 많지 않기 때문에 올바른 방향으로 나를 안내하는 데 도움이 되는 조언이 있습니다.

권한 문제인 것 같습니다.문제의 (신규) 사용자에게 app.config 파일에 대한 쓰기 권한이 있습니까?이전 사용자가 이 문제를 가릴 수 있는 로컬 관리자이거나 고급 사용자였습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top