2010-08-09 2 views
3

를 해결 방법 I SqlMembershipProvider를 사용하고 지정된 컴퓨터의 키가 생산의 기존 응용 프로그램이 있습니다 그것은 현재 닷넷 2.0 AppPool을에서 실행

<machineKey validationKey="..." decryptionKey="..." 
      validation="SHA1" decryption="AES"/> 

합니다.

나는 백업이있는 기존 데이터베이스를 사용해야하는 새로운 응용 프로그램을 작성하고 있습니다. 나는 SqlMembershipProvider (그것 않습니다 않습니다) 작업을 얻으려고 노력하고있어하지만 나는 알려진 사용자 이름/암호 작동을 얻을 수 없습니다. 이 계정은 prod에서 작동하며 암호 해시와 salt는 두 데이터베이스 (prod 및 mine)에서 동일합니다. 그러나 SqlMembershipProvider가 데이터베이스의 암호와 입력 된 해시 된 암호를 비교할 때 동일하지는 않습니다. 제안 이미 기계 키를 지정하고 그러나 http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes

:

이 문서에서는 닷넷 4.0 ASP.Net의 기본 해싱 알고리즘을 깨는 변화를 의미한다. 또한, .Net 4.0 구성 요소를 제거하고 3.5 (CLR 2)로 다시 놓았으며 입력 된 암호의 해시는 여전히 동일합니다.

또한이 새로운 임시 응용 프로그램을 동일한 서버 프로덕션에 다시 배포하려고 시도했지만 여전히 로그인에 실패합니다 (암호 해시 불일치로 인해 실패했는지 확인할 수는 없지만).

그 밖의 어떤 조치를 취할 수 있습니까?

답변

0

먼저 프로덕션 응용 프로그램을 dev/test에 복사 한 다음 실행하여 예상대로 작동하는지 확인하십시오. 그렇다면 .NET 4.0에서 실행되도록 프로젝트를 업그레이드하고 다른 코드는 수정하지 마십시오 (즉, SQLMembershipProvider에서 작동하지 않도록 시도하십시오) - 응용 프로그램을 다시 테스트하십시오. 작동하면 알 수 있습니다. 환경 문제가 아니며 .NET에서 중요한 변경 사항이 아닌 코드에서 작동해야한다고 생각하는 부분을 가리키고 있습니다. 내 생각 엔 새 응용 프로그램에서 사용하는 해시 알고리즘이 이전 응용 프로그램에서 사용 된 알고리즘과 다릅니다. 이전 응용 프로그램에서 암호를 소금 화 했습니까? 새로운 응용 프로그램에서 같은 소금을 사용하고 있습니까? 기본값은 .NET 4

당신이 가장 가능성이 SHA1입니다 원하는 값으로 변경으로