내 Google foo는 실제로 약했다. 대답은 내 질문에 대한 링크 바로 뒤에 있습니다. 그래서 누군가가 동일한 질문을 결국 가지고있는 경우에 대비하여 this blog에 대한 몇 가지 링크가 있습니다.
첫째, 당신은 "설정 물건을 주장하는"이해하려고 노력한다 :
,536,913 청구 세트 어디에서 온 63,210
그런 다음, 당신이 알아야 할이 지식
무장, 실제로는 매우 간단해진다.
내가 제대로 이해한다면, 기본 워크 플로우 이런 식으로 뭔가 될 것이다 :
- 클라이언트는
SecurityTokenProvider
- 클라이언트를 사용하여
SecurityToken
생성은 SecurityTokenSerializer
- 서버를 사용하여
SecurityToken
가 사용 SecurityToken
를 역 직렬화 직렬화 a SecurityTokenSerializer
- 서버는
SecurityTokenAuthenticator
0123을 사용하여
IAuthorizationPolicy
을 만듭니다. 516,
- 서버가 생성
AuthorizationContext
IAuthorizationPolicy
들로부터
- 가 완료
예 :
// Create the SecurityTokenProvider
var p = new UserNameSecurityTokenProvider("username", "password");
// Get the SecurityToken from the SecurityTokenProvider
var t = p.GetToken(TimeSpan.FromSeconds(1.0)) as UserNameSecurityToken;
// ... transmit SecurityToken to server ...
// Create the SecurityTokenAuthenticator
var a = new CustomUserNameSecurityTokenAuthenticator(
UserNamePasswordValidator.None);
// Create IAuthorizationPolicies from SecurityToken
var i = a.ValidateToken(t);
// Create AuthorizationContext from IAuthorizationPolicies
var c = AuthorizationContext.CreateDefaultAuthorizationContext(i);
ShowClaims(c.ClaimSets);
X509SecurityToken
들어 S는 X509SecurityTokenProvider
/Authenticator
를 사용한다. WindowsSecurityToken
에는 WindowsSecurityTokenAuthenticator
가 있지만 공급자는 아닙니다. 대신 생성자를 사용하십시오.
var t = new WindowsSecurityToken(WindowsIdentity.GetCurrent());
이 방법은 매우 효과적입니다. 지금까지 생략 한 유일한 점은 토큰 직렬화입니다. SecurityTokenSerializer
클래스에는 .NET 프레임 워크에 구현 된 하나의 구현 인 WCF와 함께 제공되는 WSSecurityTokenSerializer
클래스가 있습니다.
직렬화 UserNameSecurityToken
들과 마법처럼 X509SecurityToken
의 작품 (직렬화 복원을 시도하지 않은), 그러나 WindowsSecurityToken
들 분명히 시리얼 라이저에서 지원되지 않습니다. 이로 인해 나는 이미 가지고있는 두 가지 인증 방법 (인증서 및 사용자 이름/암호)을 남겨 둡니다. 어쨌든 AuthorizationContext
을 원하지 않았기 때문에 나는 가지고있는 것을 고수 할 것입니다 :
출처
2009-03-14 22:14:39
dtb
누군가가 관심이있는 경우 SecurityToken을 클라이언트 측에서 만들어 서버로 전송해야하는지 확신 할 수 없습니다. X.509 보안의 경우 서버와 함께 SslStream을 시작하고 서버 인증서에서 X509SecurityToken을 만드는 것이 훨씬 더 합리적입니다. Windows 보안의 경우 NegotiateStream이 사용되면 negotiateStream.RemoteIdentity에서 WindowsSecurityToken을 만들 수 있습니다. 물론 사용자 이름/비밀번호 보안의 경우 사용자 이름과 비밀번호를 전송해야합니다. – dtb