別の WCF STS サービスによって発行されたセキュリティ トークンを必要とする WCF サービスがあります。これはすべてうまく機能します。私のアプリケーションでは、次のようにサービスを使用します。
MyServiceClient myService = new MyServiceClient();
myService.Open();
myService.DoStuff();
STS サービスが呼び出されてトークンが取得され、そのトークンを使用してサービス メソッド DoStuff が呼び出されます。
ただし、最初のハンドシェイクが終了すると、myService
オブジェクトはトークンをキャッシュし、有効期限が切れるまで再利用します。これは問題のない動作ですが、トークンを強制的に更新するにはどうすればよいですか?
myService.ClientCredentials.Invalidate(); // something like this?
DoStuff() をもう一度呼び出すと、最初に行ったのと同じように、STS に再度アクセスする必要があることがわかります。
新しいプロキシクラスオブジェクトを作成するだけで行き詰まっていmyService = new MyServiceClient();
ますか? これは機能しますが、核爆弾の解決策のようです。
または、新しいトークンを手動で取得して現在のトークンを置き換える方法はありmyService.ClientCredentials.Renew();
ますか?
これを行うためにカスタム ClientCredentials クラスを作成する必要がある場合、上記のサンプル メソッドをどのように実装しますか?