I am interested to know the relation between Freshness Value,TokenLifetime and WebSSOLifetime parameters in ADFS 2.0 time out scenario. I have already did my bit of analysis on this and I am yet to get a clear picture.
1 回答
我通过几个来源收集了以下关于 ADFS 超时的详细信息。
ADFS 配置涉及两个主要的超时:
- WebSSOLifetime – 服务器范围的超时参数 – 默认值 = 480 分钟
- TokenLifetime – 这是为每个依赖方配置的 – 默认值 = 10 小时
WebSSO生命周期:
这是适用于所有 RP(依赖方)的服务器范围设置。每当用户向给定 RP 请求令牌时,他必须首先对 ADFS 服务进行身份验证。在与 ADFS 服务通信后,他将收到两个令牌,一个证明他是谁的令牌(我们称之为 ADFS 令牌)和一个用于 RP 的令牌(假设为 RP 令牌)。现在,WebSSOLifetime 超时决定了 ADFS 令牌可用于请求新 RP 令牌而无需重新进行身份验证的时间。换句话说,用户可以为此 RP 或其他 RP 请求新令牌,并且在 WebSSOLifetime 使 ADFS 令牌到期之前,他不必证明自己是谁。
令牌生命周期:
这是适用于特定 RP 的 RP 级别设置。它不会影响在 ADFS 服务器中配置的其他 RP。每当用户收到 RP 令牌时,它都会在某个时间过期。届时,用户将不得不再次访问 ADFS 服务器并请求新的 RP 令牌。根据 ADFS 令牌是否仍然有效,他不必重新进行身份验证。
降低 TokenLifetime 的一个论点可能是您希望更快地更新声明。在默认情况下,每当修改某些属性存储信息时,此更改可能需要 10 小时才能到达其声明中的用户。我们可以使用以下过程通过 Shell 脚本设置 TokenLifetime:
• 以管理员模式启动 PowerShell 并发出命令
“Add-PSSnapin Microsoft.Adfs.Powershell”
• 使用以下命令获取应用程序的配置详细信息:
Get-ADFSRelyingPartyTrust -Name “您的应用在 ADFS 依赖方信任中的显示名称”</p>
• 使用以下命令将 ADFS 设置中的 TokenLifeTime 值更改为所需值:
set-ADFSRelyingPartyTrust -Targetname“您的应用在 ADFS 信赖方信任中的显示名称”-TokenLifetime“分钟值”
这将使 RP 令牌在指定的时间段后失效。
通过上述设置,为了提示用户重新认证,我们要求 WebSSOLifetime 低于 TokenLifetime。
想象一个场景,不同的 RP 有不同的重新认证超时要求——假设一个 RP 希望它的用户在 10 分钟后重新认证(TokenLifetime 设置为 10),而其他 RP 的服务器级别 WebSSOLifetime 设置为 50 分钟。在这种情况下,用户不会被重定向到 ADFS 身份验证页面。相反,用户将被创建一个没有任何身份验证的新会话。这是因为尽管 RP 级别令牌已过期,但 WebSSO 令牌仍然有效。
新鲜度值:
为了摆脱这个循环,我们可以使用一个名为 Freshness Value (OASIS - wfresh ) 的设置。当包含在 web.config 的 federatedAuthentication 部分中时,此参数(设置为 freshness="0")将提示 IDP 根据 WCT 参数中的当前时间检查令牌的新鲜度值。
新鲜度值的 OASIS 描述 - wfresh:
“这个可选参数表示新鲜度要求。如果指定,这表示以分钟为单位指定的所需最大身份验证年龄。IP/STS 不应该发布具有更长生命周期的令牌。如果指定为“0”,则表示请求 IP/STS 在颁发令牌之前重新提示用户进行身份验证。”</p>
影响超时的其他因素:
在不使用 ADFS 代理服务器的地方通过 ISA 或 TMG 反向代理发布 ADFS 时,我们还需要考虑以下因素 - 通常称为声明不知道反向代理。
MSISSignOut 跟踪 ADFS(在此会话中)发出的所有令牌,因此注销请求可以使 ADFS 已验证的所有依赖方会话无效,而不仅仅是注销发起请求的应用程序。这就是所谓的单点注销或单点注销。但是,ISA/TMG 在设计时并未考虑 SAML 声明,因此在启动超时/注销过程时它们无法正确响应。
当我们面临以下任何一种情况时,不知道声明的反向代理令牌生命周期就会出现:
• 用户与请求的 Web 应用程序的会话已过期,他们需要使用 ADFS 重新进行身份验证,或者
• 如上所述启动注销。
在反向代理会话的生命周期内,用户可以在不提示输入凭据的情况下重新向 ADFS 进行身份验证,因为代理在会话期间会将已收集的凭据传递到 ADFS。
这与 ADFS 没有任何关系。这就是反向代理上的会话的配置方式。这是限制此侦听器的反向代理会话生存期的一个强有力的理由。因此,即使 ADFS 会话超时,使用活动的反向代理会话也可以重新对 ADFS 进行身份验证。有关 TMG – ADFS 设置的更多详细信息,请阅读此 博客文章。
我保持这个问题开放以获得关于这个主题的更多信息。