2017-12-14 13 views
1

wcf에 대한 사용자 지정 보안을 구현하고 싶습니다. ServiceAuthenticationManager를 사용하고 싶습니다. 그러나 메시지를 차단할 수있는 방법을 혼란스럽게합니다. 예외를 throw하려고 시도했지만 그 시간에 예외 정보를 얻을 수 없습니다. 나머지 호출에서 "요청 오류"와 "호출자가 비누 호출에서 인증되지 않았습니다."하지만 ServiceAuthenticationManager의 올바른 용도는 무엇입니까? 아니면 메시지를 차단해야합니까?WCF ServiceAuthenticationManager 확장 성

public class MyAuthenticationManager : ServiceAuthenticationManager 
{ 
    public override ReadOnlyCollection<IAuthorizationPolicy> Authenticate(ReadOnlyCollection<IAuthorizationPolicy> authPolicy, Uri listenUri, ref Message message) 
    { 
     //throw new AuthenticationException("Credentials expired!"); 
     throw new SecurityException("my custom message:Invalid authentication"); 
     return base.Authenticate(authPolicy, listenUri,ref message); 
    } 
} 
+2

아마도 인증에 실패한 이유에 대해 의심스러운 고객에게 세부 정보를 제공해서는 안됩니다. 일반적으로 사용자 정의 오류가 필요하지 않습니다. – MickyD

답변

2

인증/승인은 맞춤 메시지를 제공하지 않습니다. 어떤 종류의 표시 당신이 권한이 없거나 인증되지 않은 이유는 공격자가 보안을 침해하거나 자격이없는 정보를 얻는 방법입니다.

예를 들어 "비밀번호가 잘못되었습니다"라는 메시지는 사용자 이름이 인 것을 나타냅니다.입니다. 그건 나빠. 승인되지 않은 요청은 응답과 같은 정보를 얻지 않아야합니다.

무엇이 잘못되었는지보고 싶은 경우 서버 관리자가 액세스 할 수있는 로그에 기록하십시오. 그러나 클라이언트에게 아무것도 보내지 마십시오. 이제까지.

다음과 같이 요약하면 다음과 같습니다. 사용자 정의 메시지를 출력 할 수 없으며 의도적으로 설계된 것입니다.

+0

WCF rest 반환 메시지가 serviceauthenticationmanager와 동일하지 않습니다. 이유는 serviceauthenticationmanager에서 예외를 throw하는 방식으로 사용자 정의 오류 메시지를주고 싶습니다. 메시지를 방해하는 올바른 방법입니까? 제안 사항은 무엇입니까? – Bilgehan