2

特定の状況下で、Windows Identity Framework が FedAuth Cookie を書き込むのに問題があります。私は、既に WIF を使用し、独自のドメインの FedAuth Cookie を正常に書き込む MVC4 Web サイトのスイートの開発を取り上げています。現在、スイート内の各ドメインに書き込まれた Cookie を取得しようとしています。

私の開発マシンには、IIS7.5 (app1.mycompany.com、app2.mycompany.com、app3.DIFFDOMAIN.com) によってローカルにホストされている 3 つの Web サイトがあります。app1 にサインインすると、Cookie のドメインを「mycompany.com」に設定します。これは、app1 と app2の両方がフェデレーションされていることを意味しますが、app3 を含める良い方法が見つかりません。

FederatedAuthentication.SessionAuthenticationModule
                       .CookieHandler.Domain = "mycompany.com".


これまでに気づいたこと/試したこと:

  1. app1 では、Domain = "app1.mycompany.com" または "mycompany.com" を設定でき、Cookie が書き込まれますが、それ以外に設定すると Cookie は書き込まれないため、ドメインの基礎となる検証が必要です。 cookie を書き込むときのプロパティ。本当??

  2. https://app3.DIFFDOMAIN.com/fedauthDomain = "DIFFDOMAIN.com" を設定するapp1 (例) から呼び出されるように、app3 に API サービスを作成しました。

    • ブラウザから API を呼び出すと、Cookie が書き込まれます。
    • 残りのクライアントを使用して app1 から API を呼び出すと、Cookie書き込まれません。
    • app1 から app3 の URL に RedirectPermanent すると、Cookie が書き込まれます (ただし、実際にはリダイレクトしたくありません)。

だから私は、残りのクライアントを使用しているときにCookieが書き込まれない理由と、すべてのドメインで認証をフェデレートする方法を尋ねていると思いますか?

ありがとう、
ジョン。

4

2 に答える 2

1

私はあなたを手に入れたかどうかわかりません。一般に、WIFSAMモジュールがFedAuthCookieの処理を担当します。Web構成で適切に構成されている場合は、これが自動的に実行されます。FedAuth Cookieには、発行されたSTSトークンが含まれています。FAMモジュールはすべてのリクエストをインターセプトし、認証が必要なリクエストをSTSにリダイレクトします。STSでの認証後、SAMモジュールはCookieまたはセッションとの組み合わせを作成し(構成によって異なります)、特定のドメインの下のクライアントブラウザーに配置します。SAMとWAFは、すべてのドメインで認証を統合する責任はありませんが、STSは責任を負います。STSはクライアントブラウザに独自のCookieを配置しているため、異なるドメインからの後続の呼び出しごとに、STSはユーザーがログオンしているCookieに依存し、一連のクレームとともにトークンをそのドメインに自動的に送信します。

すべてのドメインの構成をセットアップする必要があります。それだけ、他はWIFの事業です。2つ目は、STSを設定することです。サンプルは、オンラインで見つけることができます。

完全なプロセスの詳細については、次のすばらしい記事をご覧ください:http: //msdn.microsoft.com/en-us/magazine/ff872350.aspx

これがお役に立てば幸いです。

于 2013-01-05T12:28:20.980 に答える
0

2 つのポイントが不足しているようです (より明確なビューを得るために、それらに関する詳細情報を入手してください):

  • Cookie の仕組みとその用途。通信しているクライアント以外のクライアント、または自分のドメイン以外のドメインに対して Cookie を設定しようとすると、安全ではないと見なされます。フェデレーテッド アプリケーションが認証データを保存すると、認証されたクライアントに送信される FedAuth Cookie に変換されます。クライアントは後続のリクエストで Cookie を送り返し、サーバーはそれをアンラップしてユーザーの認証を「認識」します。

  • フェデレーション認証の仕組み。環境内の各フェデレーション アプリケーション (RP) は、STS サービスにユーザーの認証を要求します。STS は、認証トークンを RP に送信します。RP は、ユーザーを区別できるようにそれを何らかの形で保存します。

これらの関係はどちらも 1 対 1です。クライアント アプリケーションとアプリケーション STS。1 つのクライアント セッションの認証情報を他の人と共有する必要はありません。なんで?クライアントは STS で認証され、STS はこの情報を、このクライアントの認証を希望するすべての RP に送信します。アプリケーションは互いに情報を共有せず、単一の STS のみを使用します。

于 2015-01-29T08:08:52.853 に答える