2012-12-14 2 views
1

웹 보안이 처음이므로 직접 구현하고 싶지는 않습니다. ASP.NET MVC 인터넷 응용 프로그램의 VS2012 템플릿을 통해 SimpleMembership을 사용할 계획입니다. 문제는 웹 API를 통해 데이터를 전달해야한다는 것입니다.ASP.NET MVC 인터넷 응용 프로그램 템플릿에서 수동으로 유효성을 검사하는 방법

내 웹 API에 기본 인증을 사용할 계획이므로 http 헤더에 사용자 이름/패스를 전달하면됩니다. Thinktecure.IdentityModel을 사용하여 메시지를 가로 챌 수 있습니다. 다음은 ASP.NET 회원을 사용하는 example이다 : 나는 내 자신의 부울 기능 Membership.ValidateUser를 대체 할 수

authConfig.AddBasicAuthentication((userName, password) => 
    Membership.ValidateUser(userName, password)); 

. 사용자 이름/암호로 내 사용자 지정 데이터베이스를 성공적으로 쿼리했으며 모든 것이 정상적으로 작동했습니다. 그러나 문자열 (또는 심지어 인코딩 된) 암호를 저장하고 싶지 않기 때문에 템플릿의 사용자 데이터베이스를 사용하고 있습니다.

SimpleMembership 데이터베이스를 사용하여 자격 증명을 수동으로 확인하는 방법이 명확하지 않습니다. UserProfile을 가져올 수는 있지만 프로필의 비밀번호를 확인하는 방법을 알 수 없습니다.

UserProfile user = context.UserProfiles.Find(1); 

==OUTPUT== 
user 
    UserId: 1 
    UserName: "bob" 

입력 된 암호가 기존 사용자의 암호와 일치하는지 어떻게 확인할 수 있습니까?

도움 주셔서 감사합니다.

답변

0

Membership.ValidateUser을 사용하지 않는 이유는 무엇입니까? 올바른 자리에 [InitializeSimpleMembership] (here) 특성이 있거나 자신 내부의 논리를 실행한다고 가정하면 ASP.NET 멤버쉽에만 국한되지 않고 WebMatrix 등에 대한 올바른 참조를 가지고 있으므로 Membership.ValidateUser을 호출 할 수 있습니다. SimpleMemberships Validate user을 사용합니다.

데이터베이스에 직접가보고 해시 된 패스워드 등을 사용한다고 가정하면 this 글을 선택하기 전에 입력 된 패스워드를 해싱해야 할 필요가 있기 때문에 기사가 아마도 도움이 될 것입니다. 사용자 이름과 해시 암호가 일치하는 User 테이블에서 선택하기 위해 일부 EF 또는 다른 db 접근 방법을 작성하는 것입니다. 그러나 회원 자격으로이를 수행 할 명백한 이유가 없다고 생각할 수 있습니다 .ValidateUser가이 모든 것을 수행 할 것입니다.

+0

Hi Mark - ValidateUser()가 작동하지 않았습니다. 내일 더 자세한 내용으로 질문을 업데이트하겠습니다. 그리고 해시 된 패스워드에 대한 링크에 감사드립니다. – brudert

+0

@brudert 훌륭한 자료, ValidateUser()에 대한 오류를 알려 주시면 해결할 수 있습니다. –

관련 문제