ADFS 2.0超时以及Freshness Value,TokenLifetime和WebSSOLifetime参数之间的关系

Kar*_*hik 5 .net asp.net claims-based-identity wif adfs2.0

我很想知道ADFS 2.0超时场景中Freshness Value,TokenLifetime和WebSSOLifetime参数之间的关系.我已经对此做了一些分析,我还没有得到清晰的图片.

Kar*_*hik 10

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

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

  1. WebSSOLifetime - 服务器范围超时参数 - 默认值= 480分钟
  2. TokenLifetime - 为每个依赖方配置 - 默认值= 10小时

WebSSOLifetime:

这是一个服务器范围设置,适用于所有RP(依赖方).每当用户询问给定RP的令牌时,他必须首先对ADFS服务进行身份验证.在与ADFS服务通信后,他将收到两个令牌,一个证明他是谁的令牌(让我们称之为ADFS令牌)和RP的令牌(假设是RP令牌).现在,WebSSOLifetime超时确定ADFS令牌可用于请求新RP令牌的时间长度,而无需重新进行身份验证.换句话说,用户可以为此RP或其他RP请求新令牌,并且在WebSSOLifetime到期ADFS令牌之前,他不必证明他是谁.

TokenLifetime:

这是适用于特定RP的RP级别设置.它不会影响ADFS服务器中配置的其他RP.每当用户收到RP令牌时,它将在某个时间到期.此时,用户必须再次转到ADFS服务器并请求新的RP令牌.根据ADFS令牌是否仍然有效,他不必重新进行身份验证.

降低TokenLifetime的一个理由可能是您希望声明更快地更新.使用默认值修改某些属性存储信息时,可能需要10个小时才能将此更改到达其声明中的用户.我们可以使用以下过程通过Shell脚本设置TokenLifetime:

•以管理员模式启动PowerShell并提供命令

       “Add-PSSnapin Microsoft.Adfs.Powershell” 
Run Code Online (Sandbox Code Playgroud)

•使用以下命令获取应用程序的配置详细信息:

Get-ADFSRelyingPartyTrust -Name"您在ADFS依赖方信任中的应用程序显示名称"

•使用以下命令将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部分中时,此参数(设置为fresh ="0")将提示IDP根据WCT参数中的当前时间检查令牌的新鲜度值.

OASIS新鲜度值的描述 - wfresh:

"此可选参数表示新鲜度要求.如果指定,则表示以分钟为单位指定的所需最大身份验证时间.IP/STS不应该发出具有更长寿命的令牌.如果指定为"0",则表示请求IP/STS在发出令牌之前重新提示用户进行身份验证."

影响超时的其他因素:

我们还需要考虑以下因素,同时通过ISA或TMG反向代理发布ADFS,而不使用ADFS代理服务器 - 通常称为声明不知道反向代理.

MSISSignOut跟踪ADFS已发出的所有令牌(在此会话中),因此注销请求可以使ADFS已经过身份验证的所有依赖方会话无效,而不是仅退出启动请求的应用程序.这就是所谓的单点登出或单点登出.但是,ISA/TMG的设计并未考虑SAML声明,因此在启动超时/注销过程时,它们无法正确响应.

当我们遇到以下任何一种情况时,声明无意识的反向代理令牌生命周期会出现:

•用户的会话已与所请求的Web应用程序一起过期,他们需要使用ADFS重新进行身份验证,或者

•如上所述,启动注销.

在反向代理会话的生命周期内,用户可以在不提示输入凭据的情况下重新向ADFS进行身份验证,因为代理会在会话期间将已收集的凭据传递给ADFS.

这与ADFS没有任何关系.这是反向代理的会话已配置的方式.这是限制此侦听器的反向代理会话生存期的一个强有力的理由.因此,即使ADFS会话超时,使用活动的反向代理会话,也可以重新向ADFS进行身份验证.有关TMG - ADFS设置的更多详细信息,请阅读 博客文章.

我保持这个问题是开放的,以获得关于这个主题的更多意见.

  • +1关于如何设置WebSSOLifetime的注释将完成此操作:通过ADFS 2.0管理控制台进入该设置,转到编辑服务属性的屏幕.(在左侧树中选择"服务"节点,然后在右侧选择"编辑服务属性") (2认同)