2013-02-06 2 views
0

여기 보안 Noob.asp.net의 암호화 된 암호 SQLMembershipProvider 및 Umbraco 멤버십 공급자

저는 asp.net 회원 자격을 움 브라 코 회원 자격으로 변경하려고합니다. 그러나 passwordFormat = "Encrypted"를 사용하는 것은 Umbraco 멤버십 공급자와 Microsoft의 SQL 멤버십 공급자를 다르게 암호화하는 것 같습니다.

SQL 멤버 자격 공급자 (passwordFormat = "Encrypted")로 두 명의 사용자를 등록하면 인코딩 된 암호가 다릅니다. Umbraco 제공 업체와 똑같이한다면 그들은 동일합니다.

모든 문자열이 동일한 항목 (올바른 암호)으로 암호를 해독하는 동안 - 분명히 umbraco DB (ValidateUser 실패)에서 SQL 멤버 자격 공급자가 암호화 한 비밀번호를 사용할 수 없습니다.

누구든지 아이디어가 있습니까?

참고 : 두 사이트에서 동일한 machineKey를 사용하고 있습니다.

편집 : Umbraco 멤버십 공급자에서 EncryptPassword() 및 EncodePassword()를 호출하면 다른 결과가 표시되며 EncodePassword는 올바른 호출입니다. 그러나 .NET 회원 공급자에서는 EncodePassword를 사용할 수 없습니다. 이것은 나의 혼란의 또 다른 부분이었다.

+2

암호가 소금에 의해 다를 수 있습니다. 회원 데이터베이스에서 PasswordSalt 열을 확인하십시오. Base64 문자열이어야합니다. – Infotekka

+0

@Infotekka 많은 생각을 한 후에 .NET이 소금을 가지고 있기 때문에 Umbraco는 그렇지 않다는 것을 확신합니다. 나는 암호화 (해싱이 아닌)가 소금을 사용할 수 있다는 것을 깨닫지 못했습니다 (주로 소금을 알지 못하고 어떻게 원래의 일반 텍스트로 돌아갈 수 있었는지 모르기 때문에). 그리고 지금은 적절한 테스트를하고 있습니다. 소금을 바꿀 경우 로그인 할 수 없습니다. –

+0

@Infotekka 이제 확인해 보았습니다.이 답변을 진짜 답으로 만들고 싶습니다. 정확하게 표시해 드리겠습니다. - 선명도 덕분입니다! –

답변

1

암호가 소금에 의해 다를 수 있습니다. 회원 데이터베이스에서 PasswordSalt 열을 확인하십시오. Base64 문자열이어야합니다.

0

움 브라 코 암호는 System.Security.Cryptography.HMACSHA1 클래스를 사용하여 해시됩니다. HMACSHA1을 사용하여 SQL 멤버십 사용자 암호를 해싱하고이를 훌륭하게 호출 할 수 있다고 생각합니다.

자세한 내용은 Add User with hashed password을 참조하십시오.

+0

해시가 아니라 암호화를 사용하고 있습니다. DB 문자열을 해독 할 수 있기 때문에 100 % 확실합니다 (해시로는 불가능 함). –

+0

@IanGrainger,'UmbracoMembershipProvider'는'passwordry'를'Encrypted'로 설정하지 않았다면 기본적으로'Hashed'로 설정된'passwordFormat'을 가지고 있습니다. –

+0

예, 저는 Encrypted를 사용했습니다. –