私の Web サイトは、AD FS ベースの認証を実装しています。ここで、クライアントを介して自分の Web サイトにプログラムでアクセスする必要があります。クライアントは、現在ログオンしているユーザーのコンテキストを使用して、ADFS サーバーからセキュリティ トークンを要求する必要があります。adfs/services/trust/13/usernamemixed
クライアントからのユーザー名とパスワードを使用してエンドポイントからセキュリティ トークンを要求し、それを自分の Web サイトに投稿することに成功しました。
私にとってうまくいかないのは、adfs/services/trust/13/windowsmixed
を使用してエンドポイントから同じトークンを要求することDefaultNetworkCredentials
です。エラーが発生しますThe HTTP request was forbidden with client authentication scheme 'Anonymous'.
。Microsoft.IdentityModel
SDKを使用しています ( System.IdentityModel
.NET 4.5 ではなく)。
これが私のコードのスニペットです。
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 サーバーを制御することはできず、そこから何が問題なのかをデバッグすることはできません。私ができることは、クライアント側からのみです。上記のコードで何が問題になっているのですか? どんな助けや指針も大歓迎です。