カスタム STS アクティブ フェデレーション実装を使用して保護された wcf Web サービスがあります。
そのため、クライアントは、WCF サービスのメソッドを呼び出すことができる "トークン" について STS に接続する必要があります。
サービス自体からセルフサービス呼び出しを行う方法がわかりません。
手順は以下のとおりです
- クライアントは STS を呼び出してトークンを取得します
- このトークンを使用して、WCF サービスのメソッドを呼び出します
- WCF サービスのメソッドが実行されています
- チャネル ファクトリを作成し、スレッドで使用可能なブートストラップ トークンを使用して、別の 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'.
申し訳ありませんが、詳細を追加する必要はありません。詳細が必要な場合は、コメントで返信してください。ありがとう :)