2011-05-03 2 views
4

둘 다 자체 ASP.NET 인증 데이터베이스에서 사용자를 만드는 두 개의 웹 사이트가 있습니다. 아래 둘 모두에 대한 Web.config가 있습니다. 또한 두 솔루션 모두에서 aspnet_Applications 데이터베이스 레코드를 동일하게 만들었습니다. 사용자를 만들면 암호화 된 비밀번호가 동일하지 않으며 비밀번호도 다릅니다.ASP.NET : 응용 프로그램 간의 양식 인증 : 일치하는 암호 암호화 설정

두 시스템이 동일한 사용자 이름과 암호를 사용하는 경우 두 웹 사이트에서 동일한 암호 해시를 만드는 방법에 대해 알고 싶습니다.

<configuration> 
    <system.web> 
    <authentication mode="Forms" > 
     <!-- The name, protection, path, validationKey, validation, decryptionKey, 
      and decryption attributes must be identical across all applications. 
     --> 
     <forms loginUrl="~/Account/Login" 
      name=".ASPXAUTH" 
      protection="All" 
      path="/" 
      domain="contoso.com" 
      timeout="2880" 
      requireSSL="false" 
      cookieless="UseCookies" 
      enableCrossAppRedirects="true" /> 
    </authentication> 
    <!-- Validation and decryption keys must exactly match and cannot 
     be set to "AutoGenerate". The validation and decryption 
     algorithms must also be the same. --> 
    <!-- The validationKey is not wrapped in the solution --> 
    <!-- These keys are examples --> 
    <machineKey 
     validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D940 
         1E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51 
         F17C529AD3CABE" 
     decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" 
     validation="SHA1" 
     decryption="Auto" /> 
    </system.web> 
</configuration> 

답변

4

사용하는 것처럼 울리는 SqlMembershipProvider는 소금과 같은 임의의 128 비트 값을 생성한다. 즉, 사용자가 암호를 보안 조치로 해시 할 때이 값이 포함됩니다. 두 개의 독립적 인 시스템이 동일한 해시를 생성하도록하려면 동일한 사용자에 대해 PasswordSalt 열 값이 동일한 지 확인해야합니다. PasswordSalt를 설정하는 멤버쉽 사용자에는 아무 것도 없습니다. 즉, db를 직접 설정하여이 속성을 가진 사용자 지정 MembershipUser를 만들고 저장하거나이 기능을 제공하는 사용자 지정 클래스 또는 메서드를 빌드 할 수 있어야합니다.

+0

그건 트릭을 했어. 비밀번호와 소금을 포함하여 마지막으로 수정 된 비밀번호 데이터베이스를 동기화하면 인증이 정상적으로 작동합니다. 그러나 짧은 샘플 목록을 사용하더라도 사용자 GUID에 충돌이 발생한다는 사실을 알게되었습니다. –

관련 문제