3

私の 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.IdentityModelSDKを使用しています ( 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 サーバーを制御することはできず、そこから何が問題なのかをデバッグすることはできません。私ができることは、クライアント側からのみです。上記のコードで何が問題になっているのですか? どんな助けや指針も大歓迎です。

4

1 に答える 1