사용자 이름과 암호를 사용하는 독립 실행 형 인증 WCF 웹 서비스에 문제가 있습니까? https 또는 다른 우수 사례를 사용해야합니까?독립 실행 형 인증 wcf 웹 서비스
또한 WCF 웹 서비스를 사용하여 사용자의 암호를 재설정하려는 경우 모든 종류의 무차별 공격을 방지하려면 어떻게해야합니까? 아니면이 접근법을 둘러싼 모범 사례도 있습니까? 비밀번호를 재설정하기 위해 이메일/사용자 이름을 보내면됩니다.
사용자 이름과 암호를 사용하는 독립 실행 형 인증 WCF 웹 서비스에 문제가 있습니까? https 또는 다른 우수 사례를 사용해야합니까?독립 실행 형 인증 wcf 웹 서비스
또한 WCF 웹 서비스를 사용하여 사용자의 암호를 재설정하려는 경우 모든 종류의 무차별 공격을 방지하려면 어떻게해야합니까? 아니면이 접근법을 둘러싼 모범 사례도 있습니까? 비밀번호를 재설정하기 위해 이메일/사용자 이름을 보내면됩니다.
을 당신이 당신의 서비스의 인증을 외부화하려는 경우이 시험을, 현명한 방법입니다 Windows Azure Access Control Service를 사용하여 Active Directory Federation Service 또는 Facebook 또는 Google과 같은 다른 ID 공급자와의 ID 연합을 지원할 수 있습니다.
X509 인증서와 같은 향후 대체 인증 스키마를 지원하는 것이 상대적으로 쉽다는 이점이 있습니다.
필요에 따라 복잡해 보이지만 WS-Trust와 같은 표준 프로토콜을 사용하여 인증 서비스를 구현하는 것을 고려해야합니다. 이 경우 귀하의 서비스는 전문 용어를 사용하는 보안 토큰 서비스 (STS)가됩니다. 이것은 Windows Identity Foundation (WIF)을 사용하여 상당히 잘 지원되며 사실 Visual Studio 용 WIF 도구에는 샘플 STS가 포함되어 있습니다.
Dominic Baier에서 만든 우수한 준비가 된 오픈 소스 STS가 있으며 필요에 따라 다운로드하여 사용자 정의 할 수 있습니다 (예 : 사용자 이름/암호 저장소 사용). 당신은 내가 말한대로이 아마도 당신이 필요로하는 것보다 더 복잡하다, 여기
http://identityserver.codeplex.com/
이 다운로드 할 수 있지만, 미래에 정말 좋은 투자가 될 수있다.
예 https를 사용해야합니다. http를 통한 인증은 인증되지 않은 서비스와 마찬가지로 공격 받기 쉽기 때문에 누구나 전선을 통과하는 일반 텍스트를 스니핑 할 수 있습니다. 당신이 그렇게 이메일 등을 전송하여 변화 될 수있는 사용자 이름 - 암호가 .. 당신은 서버에서 일부 텍스트 파일을 만들 수 있습니다 UserNamePasswordValidator 클래스를 사용, 인증을 구현할 수 WCF에서 좋은 방법은 ...이
public class MyCustomValidator: System.IdentityModel.Selectors.UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
if (null == userName || null == password)
{
throw new ArgumentNullException();
}
else
{
bool isValid = UserRepository.ValidateUser(userName,password); //any db based checking
if(!isValid)
{
throw new SecurityTokenException("Unknown Username or Password");
}
}
}
}
설정 : 당신은 HTTPS없이 인증을 사용하고자하는 경우
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="CustomAuthentication">
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="CustomValidator">
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="MyAssembly.MyCustomValidator, MyAssembly"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="MyService" behaviorConfiguration="CustomValidator">
<endpoint address="" binding="wsHttpBinding" contract="IMyService" bindingConfiguration="CustomAuthentication" />
</service>
</services>
</system.serviceModel>
당신이 시도 할 수 있습니다 : WCF Authentication using basicHttpBinding and custom UserNamePasswordValidator
실제로 이것은 매우 흥미 롭습니다. –
최근에 내 자신의 인증 서비스를 시작한 후 점점 더 복잡 해지는 반복 작업을 수행 한 결과 우리는 적절한 STS로 리팩터링을 마칠 예정입니다. –