尽管有ACS令牌,但无法自动验证

时间:2012-08-23 14:53:09

标签: acs

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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