0

アプリケーションで IdP として構成された "Google" を使用して Azure ACS を構成しています。私の要件は、アプリケーションにログインしようとするたびに IdP ログイン ページが表示されないようにすることです。トークンが 1 日有効になるように、ACS トークンの有効期間を最大期間に設定しました。

アプリケーションに初めてログインし、Google ログイン ページで [サインインしたままにする] を選択すると、アプリケーションにログインできます。ブラウザーを閉じて、アプリケーションを再度開いたところ、資格情報を要求することなく、アプリケーションのホームページに正常にリダイレクトされました。(ACS は内部で作成されたセッション トークンを内部で使用し、次の要求で使用されるため)

しかし、IdP ログイン ページで [サインインしたままにする] を選択せず​​に同じ手順を実行すると、資格情報の入力を求められます。なぜこれが起こっているのですか?セッション トークンを操作し、以前に発行された ACS トークンを検証する方法はありますか?

4

1 に答える 1

1

Google で「サインインしたままにする」を選択すると、永続的な Cookie が書き込まれます。つまり、ブラウザを閉じてもログインしたままになります。デフォルトでは、アプリケーションの Cookie のスコープはセッションに限定されます (WIF を使用していると仮定します)。ブラウザーを閉じて再度開くと、元のトークンと Cookie は失われます。ブラウザは ACS にリダイレクトし、ACS は Google にリダイレクトし、永続的な Google Cookie のために再度リダイレクトします。Fiddler または HttpWatch を使用してセッションを実行すると、「サインインしたままにする」を選択した場合でも、ACS と Google に送り返され、新しいトークンを取得していることがわかります。

あなたが望むのは、RPがユーザーを「記憶」して、トークンの有効期間内に再度ログインする必要がないようにすることです。これを行うには、フェデレーション Cookie (トークンが含まれているもの) をセッションではなく永続として設定する必要があります。WIF を使用している場合、これは、FederationAuthenticationModule でCookieHandler 構成を使用して行うことができます ( PersistentSessionLifetimeを参照)。

于 2012-09-24T23:01:33.597 に答える