내 웹 사이트는 AD FS 기반 인증을 구현합니다. 이제 프로그래밍 방식으로 클라이언트를 통해 내 웹 사이트에 액세스해야합니다. 내 클라이언트는 현재 로그온 한 사용자의 컨텍스트를 사용하여 ADFS 서버에 보안 토큰을 요청해야합니다. 클라이언트의 사용자 이름과 암호를 사용하여 adfs/services/trust/13/usernamemixed
끝점에서 보안 토큰을 요청하고이를 내 웹 사이트에 게시 할 수있었습니다.STS의 RequestSecurityToken을 내 웹 사이트에 게시하십시오.
나를 위해 작동하지 않는 것은 DefaultNetworkCredentials
을 사용하여 adfs/services/trust/13/windowsmixed
엔드 포인트에서 동일한 토큰을 요청하는 것입니다. The HTTP request was forbidden with client authentication scheme 'Anonymous'.
오류가 나타납니다. .NET Framework에서 System.IdentityModel
대신 Microsoft.IdentityModel
SDK를 사용하고 있습니다.
다음은 내 코드 스 니펫입니다.
factory = new MSWSTrustChannelFactory(
new Microsoft.IdentityModel.Protocols.WSTrust.Bindings.WindowsWSTrustBinding(SecurityMode.TransportWithMessageCredential),
stsUrl);
factory.TrustVersion = TrustVersion.WSTrust13;
factory.Credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
var rst = new RequestSecurityToken
{
RequestType = RequestTypes.Issue,
AppliesTo = new EndpointAddress(realm),
KeyType = KeyTypes.Bearer,
RequestDisplayToken = true
};
MSIWSTrustChannelContract channel = factory.CreateChannel();
RequestSecurityTokenResponse rstr;
SecurityToken token = channel.Issue(rst, out rstr);
저는 ADFS 서버에 대한 제어 권한이 없으므로 여기에서 잘못된 내용을 디버깅 할 수 없습니다. 내가 할 수있는 것은 클라이언트 쪽에서 온 것입니다. 위의 코드에서 어떤 문제가 발생하는지 알고 싶습니다. 어떤 도움이나 조언을 주시면 감사하겠습니다.