适用于:Windows Server(所有受支持的版本)
使用单一登录 (SSO),用户可以在不被提示输入其他凭据的情况下进行一次身份验证并访问多个资源。 本文介绍 SSO 的默认 AD FS 行为,以及可用于自定义此行为的配置设置。
受支持的单一登录类型
AD FS 支持多种类型的单一登录体验:
会话 SSO
当用户在特定会话期间切换应用程序时,会话 SSO 不会提供进一步的提示。 如果特定会话结束,系统将再次提示用户输入其凭据。会话 SSO Cookie 是为经过身份验证的用户编写的。
如果用户的设备未注册,AD FS 将默认设置会话 SSO Cookie。 如果浏览器会话已结束并重启,则此会话 Cookie 将被删除并且不再有效。
永久性 SSO
当用户切换应用程序时,只要永久性 SSO Cookie 有效,永久性 SSO 就不会提供进一步的提示。 永久性 SSO Cookie 是为经过身份验证的用户编写的。 永久性 SSO 和会话 SSO 之间的区别在于,可以跨不同的会话维护永久性 SSO。
如果设备已注册,AD FS 将设置永久性 SSO Cookie。 如果用户选择“保持登录”选项,AD FS 还将设置永久性 SSO Cookie。 如果永久性 SSO Cookie 不再有效,将被拒绝并删除。
应用程序特定的 SSO
在 OAuth 场景中,刷新令牌用于在特定应用程序范围内维护用户的 SSO 状态。
AD FS 将根据已注册设备的永久性 SSO Cookie 生存期设置刷新令牌的过期时间。 默认情况下,Windows Server 2012 R2 上 AD FS 的 Cookie 生存期为 7 天。 如果用户在 14 天的时段内使用其设备访问 AD FS 资源,默认情况下,Windows Server 2016 上 AD FS 的 Cookie 生存期最长为 90 天。
如果设备未注册但用户选择了“保持登录”选项,则刷新令牌的过期时间将等于“保持登录”的永久性 SSO Cookie 生存期。 默认情况下,永久性 SSO Cookie 生存期为 1 天,最长为 7 天。 否则,刷新令牌的生存期等于会话 SSO Cookie 生存期(默认情况下为 8 小时)。
除非永久性 SSO 处于禁用状态,否则已注册设备上的用户将始终获得永久性 SSO。 对于未注册的设备,可通过启用“保持登录”(KMSI) 功能来实现永久性 SSO。
对于 Windows Server 2012 R2,若要为“保持登录”场景启用 PSSO,需要安装此
修补程序
,它也是
Windows RT 8.1、Windows 8.1 和 Windows Server 2012 R2 的 2014 年 8 月更新汇总的一部分
。
PowerShell
启用/禁用永久性 SSO
Set-AdfsProperties –EnablePersistentSso <Boolean>
默认启用永久性 SSO。 如果该功能处于禁用状态,则不会创建 PSSO Cookie。
启用/禁用“保持登录”
Set-AdfsProperties –EnableKmsi <Boolean>
默认情况下,“保持登录”功能处于禁用状态。 如果该功能处于启用状态,用户将在 AD FS 登录页上看到“保持登录”选项
AD FS 2016 - 单一登录和经过身份验证的设备
当请求者从已注册设备进行身份验证时,AD FS 2016 将更改 PSSO,以增加到最长 90 天但需要在 14 天期限(设备使用时段)内进行身份验证。
在首次提供凭据后,默认情况下,拥有已注册设备的用户将获得最长 90 天的单一登录功能,前提是他们至少每 14 天使用该设备访问一次 AD FS 资源。 15 天后,系统将再次提示用户输入其凭据。
默认启用永久性 SSO。 如果该功能处于禁用状态,则不会创建 PSSO Cookie。|
Set-AdfsProperties –EnablePersistentSso <Boolean\>
设备使用时段(默认为 14 天)受 AD FS 属性 DeviceUsageWindowInDays 约束。
Set-AdfsProperties -DeviceUsageWindowInDays
最长单一登录期限(默认为 90 天)受 AD FS 属性 PersistentSsoLifetimeMins 约束。
Set-AdfsProperties -PersistentSsoLifetimeMins
保持登录未经身份验证的设备
对于未注册的设备,单一登录期限由“保持登录(KMSI)”功能设置决定。 默认情况下,KMSI 处于禁用状态,通过将 AD FS 属性 KmsiEnabled 设置为 True 可启用该功能。
Set-AdfsProperties -EnableKmsi $true
禁用 KMSI 后,默认单一登录期限为 8 小时。 可使用属性 SsoLifetime 配置单一登录期限。 该属性以分钟为单位进行度量,因此其默认值为 480。
Set-AdfsProperties –SsoLifetime <Int32\>
启用 KMSI 后,默认单一登录期限为 24 小时。 可使用属性 KmsiLifetimeMins 配置启用了 KMSI 的单一登录期限。 该属性以分钟为单位进行度量,因此其默认值为 1440。
Set-AdfsProperties –KmsiLifetimeMins <Int32\>
多重身份验证 (MFA) 行为
AD FS 提供相对较长的单一登录期限。 需要注意的是,如果以前的登录基于主要凭据而非 MFA,而当前登录需要进行 MFA,AD FS 将提示进行更多身份验证(多重身份验证)。 这一行为与 SSO 配置无关。 AD FS 在收到身份验证请求时,首先判断是否存在 SSO 上下文(例如 Cookie),然后判断是否需要进行 MFA。 例如,当身份验证请求来自外部时,需要进行 MFA。 在这种情况下,AD FS 将评估 SSO 上下文是否包含 MFA。 如果不包含 MFA,则系统会提示进行 MFA。
PSSO 吊销
为保护安全性,当满足以下条件时,AD FS 将拒绝之前颁发的任何永久性 SSO Cookie:
用户更改密码
永久性 SSO 设置在 AD FS 中处于禁用状态
设备在丢失或被盗的情况下被管理员禁用
AD FS 收到为已注册的用户颁发的永久性 SSO Cookie,但该用户或设备不再注册
AD FS 收到已注册的用户的永久性 SSO Cookie,但该用户进行了重新注册
AD FS 收到由于“保持登录”选项而颁发的永久性 SSO Cookie,但“保持登录”设置在 AD FS 中处于禁用状态
AD FS 收到为已注册的用户颁发的永久性 SSO Cookie,但设备证书在身份验证过程中丢失或更改
AD FS 管理员已设置永久性 SSO 的到期时间。 配置截止时间后,AD FS 将拒绝在此之前颁发的任何永久性 SSO Cookie
如果拒绝永久性 SSO Cookie,用户需要提供其凭据才能再次使用 AD FS 进行身份验证。
要设置到期时间,请运行以下 PowerShell cmdlet:
Set-AdfsProperties -PersistentSsoCutoffTime <DateTime>
为 Office 365 用户启用 PSSO,以访问 SharePoint Online
启用并配置 PSSO 后,AD FS 将在用户身份验证后立即创建永久性 Cookie。 如果使用 PSSO,只要 Cookie 仍然有效,就无需在后续会话中重新进行身份验证。
且 Office 365 和 SharePoint Online 用户不会收到额外的身份验证提示。 在 AD FS 中配置以下两个声明规则来触发 Microsoft Azure AD 和 SharePoint Online 的永久性。 若要为 Office 365 用户启用 PSSO,以访问 SharePoint Online,请安装此修补程序。 它是 Windows RT 8.1、Windows 8.1 和 Windows Server 2012 R2 的 2014 年 8 月更新汇总的一部分。
通过 InsideCorporateNetwork 声明的颁发转换规则
@RuleTemplate = "PassThroughClaims"
@RuleName = "Pass through claim - InsideCorporateNetwork"
c:[Type == "https://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork"]
=> issue(claim = c);
A custom Issuance Transform rule to pass through the persistent SSO claim
@RuleName = "Pass Through Claim - Psso"
c:[Type == "https://schemas.microsoft.com/2014/03/psso"]
=> issue(claim = c);
单一登录体验
ADFS 2012 R2
设备是否已注册?
ADFS 2016
设备是否已注册?
只有更新的刷新令牌的有效期长于前一个令牌,AD FS 才会颁发新的刷新令牌。 令牌的最长生存期为 84 天,但 AD FS 使令牌在 14 天的滑动窗口内有效。 如果刷新令牌的有效期为 8 小时(常规 SSO 时间),则不会颁发新的刷新令牌。
需要了解的内容:
将向未同步 LastPasswordChangeTimestamp 属性的联合用户颁发最大期限值为 12 小时的会话 Cookie 和刷新令牌。
颁发最大期限值的会话 Cookie 和刷新令牌是因为 Azure AD 无法确定何时撤销与旧凭据相关的令牌。 例如,此行为可能是由已更改的密码所导致。 Azure AD 必须更频繁地进行检查,以确保用户和关联的令牌仍然有效。