WIF 対応の WCF サービスに対して既に認証されている WIF アプリケーションからセキュリティ トークンを送信する方法を知りたいと思っています。
どんな支援も感謝されます
答えは単純ではありませんが、次の手順は「推奨されるパターン」を構成し、次の MSDN 記事に記載されています: AD FS 2.0 を使用した ID 委任のステップバイステップ ガイド
要約すれば
web.config に項目を追加することで、STS を使用して認証されたユーザーに代わってサービスを要求するために使用できる特別なトークン (Bootstrap Token) への Web アプリケーション アクセスを許可します。
saveBootstrapTokens="true"
WCF WIF 対応サービスと STS の間に新しい信頼を作成して、そのサービスが別の認証済みユーザー (ActsAS) として機能できることを「認識」します。ActsAs 動作を使用するカスタム STS のすべての配管を記述することは簡単ではないので、ADFS v2 を使用していることを願っています。
WCF サービスを呼び出すときに、特に BootStap トークンを渡す新しいチャネルを作成します。
channel = factory.CreateChannelActingAs(callerToken);
すべてのチャネル作成と、WCF サービスと Web アプリが STS サービスと対話する必要があるため、パフォーマンスについて少し心配しています。
@DavidEvans-私はあなたの答えに追加する評判がありません。ただし、ActingAs呼び出しでブートストラップトークンを有効に渡すことができるため、最後の手順は正しくなく、非常に混乱する可能性があると思います。
問題は、ブートストラップトークンを渡す必要があると述べていることです。ただし、ActAsの信頼を確立する過程で、ActAs\Issuedトークンが作成されます。このトークンはブートストラップトークンではありません。実際、この新しいトークンを作成するには、ユーザーのブートストラップトークンが必要です。これは、特定の認証されたユーザーとして機能する依存パーティを表します。
したがって、ステップ2はActAsトークンの作成です(これには、言及するすべてのものが含まれます)。ステップ3は、ブートストラップトークンではなく、ActAsトークンを使用してWCFサービスを呼び出すことです。
Microsoft は、WIF 4.5 を使用して、さまざまな ID の例を含む Identity Traningskit を提供しています。例InvokingViaDelegatedAccess in there demonstrates perfectly the usage of the ActAs- delegation scenario.
However, it cost me days to bring theInvokingViaDelegatedAccess` 例 稼働中。多くの回避策を実行した後、最終的にセットアップを実行してこの例を実行することができました。ここからダウンロードできるインストールマニュアルを書きました:
ここにリンクの説明を入力して ください ))
ただし、この例は、Visual Studio 2012 がインストールされている Windows 7 VM で実行されています。
ブートストラップ トークンを保存する必要があることは正しいです。Web アプリケーションにログインしたら、最初に SecurityTokenService から発行されたトークンをキャッシュする必要があります。WIF 4.5 を使用すると、これは web.config の次のコマンドで実行できます。
<identityConfiguration saveBootstrapContext="true">
WCF ChannelFactory には 、バックエンド アプリケーションから WCF サービスへの委任シナリオをサポートするさまざまなメソッド(CreateChannelWithActAsToken、CreateChannelWithIssuedToken、WithOnBehalfOfToken)があります。ActAs シナリオを使用すると、CreateChannelWithActAsToken がブートストラップ トークンを抽出し、ブートストラップ トークンを STS に送信し、STS が新しい (またはコピーされた) クレーム値を使用して新しい SecurityToken を作成し、次に ActAs-SecurityToken を使用してバックエンド サービスが呼び出されます。このメソッドを使用すると、サービスを呼び出すたびに新しい ActAs-SecurityToken が発行されます。これを望まない場合は、発行されたトークンを Cookie にキャッシュして他の呼び出しに再利用できるため、CreateChannelWithIssuedToken を使用することをお勧めします。
/patric Seiler、開発者.net www.itconsulting24.com