0

我正在将 Azure ACS 配置为在我的应用程序中配置为 IdP 的“Google”。我的要求是我不希望每次尝试登录我的应用程序时都显示 IdP 登录页面。我已将我的 ACS 令牌生命周期设置为最长期限,以便我的令牌在一天内有效。

当我第一次登录我的应用程序并在 Google 登录页面中选择“保持登录”时,我可以登录我的应用程序。我现在关闭浏览器,重新打开应用程序,在没有任何凭据请求的情况下成功重定向到应用程序主页。(因为 ACS 内部使用内部创建的会话令牌,它将在下一个请求中使用)

但是,如果我没有在 IdP 登录页面中选择“保持登录”并继续执行相同的步骤,则会要求我提供凭据。知道为什么会这样吗?有没有办法可以操纵会话令牌并验证之前发给我的 ACS 令牌?

4

1 回答 1

1

当您在 Google 上选择“保持登录”时,它会写入一个永久性 cookie,这意味着即使您关闭浏览器,您也会保持登录状态。默认情况下,您的应用程序的 cookie 的范围是会话(假设您使用的是 WIF)。当您关闭并重新打开浏览器时,原始令牌和 cookie 就消失了。您的浏览器会重定向到 ACS,后者会重定向到 Google,由于 Google cookie 存在持久性,它会再次将您重定向回来。使用 Fiddler 或 HttpWatch 运行会话应该表明,即使您选择“保持登录”,您仍会被发送回 ACS 和 Google 并获得新令牌。

听起来您想要的是您的 RP 来“记住”用户,这样他们就不必在令牌生命周期内再次登录。为此,您的联合 cookie(其中包含令牌的)需要设置为持久性,而不是会话。如果您使用的是 WIF,这可以使用FederationAuthenticationModule 上的CookieHandler 配置来完成(请参阅PersistentSessionLifetime)。

于 2012-09-24T23:01:33.597 回答