0

カスタム STS アクティブ フェデレーション実装を使用して保護された wcf Web サービスがあります。

そのため、クライアントは、WCF サービスのメソッドを呼び出すことができる "トークン" について STS に接続する必要があります。

サービス自体からセルフサービス呼び出しを行う方法がわかりません。

手順は以下のとおりです

  1. クライアントは STS を呼び出してトークンを取得します
  2. このトークンを使用して、WCF サービスのメソッドを呼び出します
  3. WCF サービスのメソッドが実行されています
  4. チャネル ファクトリを作成し、スレッドで使用可能なブートストラップ トークンを使用して、別の Web サービス メソッドを呼び出す必要があります。

4番目のステップを実装するには?

public int GetValue(string input)
{
    CallGetValue1();
    return int.Parse(input);
}

public int GetValue1()
{
    return int.MaxValue;
}

private void CallGetValue1()
{
    var channelFactory = new ChannelFactory<IWCFService>("WCFService");
    channelFactory.Credentials.SupportInteractive = false;
    channelFactory.ConfigureChannelFactory();
    var proxy = channelFactory.CreateChannelWithIssuedToken(GetSecurityToken());
    var result = proxy.GetValue1();
}

private static SecurityToken GetSecurityToken()
{
    var identity = Thread.CurrentPrincipal.Identity as IClaimsIdentity;
    return identity.BootstrapToken;
}

CallGetValue1 でエラー @ proxy.GetValue1() が表示される

System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: セキュリティ トークン認証システム 'System.ServiceModel.Security.Tokens.GenericXmlSecurityTokenAuthenticator' は、タイプ 'System.IdentityModel.Tokens.SamlSecurityToken' のトークンを検証できません。(Fault Detail は、IncludeExceptionDetailInFaults=true によって作成された可能性が高い ExceptionDetail と等しく、その値は次のとおりです。 System.IdentityModel.Tokens.SamlSecurityToken'.

申し訳ありませんが、詳細を追加する必要はありません。詳細が必要な場合は、コメントで返信してください。ありがとう :)

4

0 に答える 0