1

パッシブ フェデレーション (ADFS 2.0) を使用するメイン Web サイトがあります。この Web サイトには、jsonp を使用して MVC Web API サイトを呼び出す JavaScript があります。

この WebAPI をシングル サインオン (同じマシン、別のポート) に参加させようとしています。ただし、パッシブ リダイレクトは jsonp を壊します。(STS はブラウザがレンダリングする独自のスクリプトを返し、応答スクリプトの実際の URL にリダイレクトすることはありません)

パッシブ フェデレーションは jsonp webapi と互換性がありますか? そうでない場合、ユーザー名/パスワード資格情報なしでアクティブ フェデレーションを使用するにはどうすればよいですか? つまり、ユーザーは webapi を呼び出す前にメインの Web サイトを介して認証されるため、webapi で既にログインしているという事実をどのように活用すればよいでしょうか?

4

1 に答える 1

1

パッシブ フェデレーション プロトコルは、このシナリオでは機能しません。

次の 2 つのオプションがあります。

  • Web API が Web サイトで排他的に使用されている場合、ユーザーの認証時に WIF によって生成される Cookie を共有できます。これを行うには、異なる Web サイトを使用している場合は、<cookieHandler>WIF 構成のセクションを構成して、同じドメインとパスを使用し、(マシン名ではなく) FQDN を使用して、ブラウザーが Web サイトと API の両方を同じものとして識別するようにする必要があります。ドメイン。

  • 2 番目のオプションは、SAML トークン (認証中に生成される) を抽出して検証するように Web API を構成することです。<service>ここで行う必要があるのは、認証に使用されたトークンを保存し ( WIF 構成の要素で saveBootstrapToken をオンにする)、claimsIdentity.GetBootrapToken()拡張メソッドを使用してトークンを取得し、HTTP ヘッダーとして JavaScript 呼び出しにトークンを添付することです。 「Authorization: bearer ...the-token....」のように。サーバー側では、それを取得してトークンを (プログラムで) 検証する必要があります。トークンが大きすぎると、ヘッダーの長さが原因で IIS のクォータに達する可能性があることに注意してください。

于 2012-08-02T14:40:07.870 に答える