5

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.

4

1 回答 1

10

我通过几个来源收集了以下关于 ADFS 超时的详细信息。

ADFS 配置涉及两个主要的超时:

  1. WebSSOLifetime – 服务器范围的超时参数 – 默认值 = 480 分钟
  2. 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 设置的更多详细信息,请阅读 博客文章。

我保持这个问题开放以获得关于这个主题的更多信息。

于 2013-03-26T20:30:18.980 回答