可以为通过应用程序代理(该代理使用集成的 Windows 身份验证保护)发布的本地应用程序提供单一登录。 这些应用程序需要使用 Kerberos 票证进行访问。 应用程序代理使用 Kerberos 约束委派 (KCD) 来支持这些应用程序。
若要详细了解单一登录 (SSO),请参阅什么是单一登录?
通过在 Active Directory 中提供专用网络连接器权限来模拟用户,可以使用集成 Windows 身份验证 (IWA) 实现应用程序的单一登录。 连接器使用此权限来代表用户发送和接收令牌。
使用 KCD 的单一登录的工作原理
此图说明了当用户尝试访问使用 IWA 的本地应用程序时流。
- 用户输入 URL,通过应用程序代理访问本地应用程序。
- 应用程序代理将请求重定向到 Microsoft Entra 身份验证服务,以进行预身份验证。 此时,Microsoft Entra ID 将应用所有适用的身份验证和授权策略,例如多重身份验证。 如果用户通过验证,Microsoft Entra ID 将创建令牌并将其发送给用户。
- 用户将令牌传递给应用程序代理。
- 应用程序代理验证令牌并从中检索用户主体名称 (UPN),然后连接器通过双重身份验证安全通道拉取 UPN 和服务主体名称 (SPN)。
- 连接器与本地 AD 进行 Kerberos 约束委派 (KCD) 协商,模拟用户以获取应用程序的 Kerberos 令牌。
- Active Directory 将应用程序的 Kerberos 令牌发送到连接器。
- 连接器使用从 AD 收到的 Kerberos 令牌,将原始请求发送到应用程序服务器。
- 应用程序将响应发送到连接器,该响应随后返回到应用程序代理服务,最后返回到用户。
先决条件
开始为 IWA 应用程序使用 SSO 之前,请确保已在环境中完成以下设置和配置:
- 你的应用(例如 SharePoint Web 应用)已设置为使用集成 Windows 身份验证。 有关详细信息,请参阅 Enable Support for Kerberos Authentication(启用对 Kerberos 身份验证的支持);对于 SharePoint,请参阅 Plan for Kerberos authentication in SharePoint 2013(在 SharePoint 2013 中规划 Kerberos 身份验证)。
- 所有应用都有服务主体名称。
- 运行连接器的服务器以及运行应用的服务器都已加入域且属于同一个域或信任域。 有关加入域的详细信息,请参阅 Join a Computer to a Domain(将计算机加入域)。
- 确保连接器服务器可以读取用户的
TokenGroupsGlobalAndUniversal
属性。 安全强化可能会限制此访问。 通过将连接器服务器添加到 Windows 授权访问 组来启用它们。
配置 Active Directory
根据专用网络连接器和应用程序服务器是否位于同一域中,Active Directory 配置有所不同。
连接器和应用程序服务器位于同一域中
在 Active Directory 中,转到“工具”“用户和计算机”。
选择运行连接器的服务器。
单击右键,并选择“属性”“委托”。
选中“仅信任此计算机来委派指定的服务”。
选中“使用任意身份验证协议”。
在“可以由此帐户提供委托凭据的服务”下面,添加应用程序服务器的 SPN 标识值。 此设置使专用网络连接器能够针对列表中定义的应用程序模拟 AD 中的用户。
连接器和应用程序服务器位于不同的域中
有关跨域使用 KCD 的先决条件列表,请参阅 Kerberos Constrained Delegation across domains(跨域 Kerberos 约束委托)。
若要从应用程序代理(连接器)启用 Kerberos 身份验证委派,请使用
PrincipalsAllowedToDelegateTo
Web 应用程序服务帐户的属性(webserviceaccount
)。 应用程序服务器在运行下webserviceaccount
,委托服务器为connectorcomputeraccount
。 在与webserviceaccount
相同的域中的域控制器(Windows Server 2012 R2 或更高版本)上运行以下命令。 将简单名称(非 UPN)用于这两个帐户。如果
webserviceaccount
是计算机帐户,请使用以下命令:$connector= Get-ADComputer -Identity connectorcomputeraccount -server dc.connectordomain.com Set-ADComputer -Identity webserviceaccount -PrincipalsAllowedToDelegateToAccount $connector Get-ADComputer webserviceaccount -Properties PrincipalsAllowedToDelegateToAccount
如果
webserviceaccount
是用户帐户,请使用以下命令:$connector= Get-ADComputer -Identity connectorcomputeraccount -server dc.connectordomain.com Set-ADUser -Identity webserviceaccount -PrincipalsAllowedToDelegateToAccount $connector Get-ADUser webserviceaccount -Properties PrincipalsAllowedToDelegateToAccount
配置单一登录
根据使用应用程序代理发布应用程序中的说明发布应用程序。 确保选择 Microsoft Entra ID 作为预身份验证方法。
应用程序显示在企业应用程序列表中后,选择它并选择 “单一登录”。
将单一登录模式设置为“集成 Windows 身份验证”。
输入应用程序服务器的“内部应用程序 SPN”。 在本示例中,已发布应用程序的 SPN 为
http/www.contoso.com
。 SPN 需要位于连接器可以向其提供委派凭据的服务列表中。针对你要代表你的用户使用的连接器选择“委派的登录标识”。 有关详细信息,请参阅使用不同的本地标识和云标识。
非 Windows 应用的 SSO
Microsoft Entra 应用程序代理中的 Kerberos 委派流在 Microsoft Entra 对云中的用户进行身份验证时启动。 请求到达本地后,Microsoft Entra 专用网络连接器将通过与本地 Active Directory 交互,代表用户颁发 Kerberos 票证。 此过程称为 Kerberos 约束委派(KCD)。
在下一个阶段,请求将发送到具有此 Kerberos 票证的后端应用程序。
用户可通过多种机制定义如何在此类请求中发送 Kerberos 票证。 大多数非 Windows 服务器都应以 SPNEGO 令牌形式接收此票证。 Microsoft Entra 应用程序代理支持该机制,但默认处于禁用状态。 用户可将连接器配置为 SPNEGO 或标准 Kerberos 令牌,但不能同时配置为这两种令牌。
如果为连接器计算机配置 SPNEGO,请确保与 SPNEGO 一起还配置了相应连接器组中的其他所有连接器。 需要标准 Kerberos 令牌的应用程序应通过未为 SPNEGO 配置的其他连接器进行路由。 某些 Web 应用接受这两种令牌形式,但用户不需要对配置进行任何更改。
若要启用 SPNEGO,请执行以下操作:
打开以管理员身份运行的命令提示符。
在需要 SPNEGO 的连接器服务器上运行以下命令。
REG ADD "HKLM\SOFTWARE\Microsoft\Microsoft Entra private network connector" /v UseSpnegoAuthentication /t REG_DWORD /d 1 net stop WAPCSvc & net start WAPCSvc
非 Windows 应用通常使用用户名或 SAM 帐户名而非域电子邮件地址。 如果这种情况适用于应用程序,则需要配置委托的登录标识字段,将云标识连接到应用程序标识。
使用不同的本地标识和云标识
应用程序代理假定用户在云和本地具有相同的标识。 但是,由于公司策略或应用程序要求,某些组织需要使用备用 ID 进行登录。 仍可以通过为每个应用程序配置 委派登录标识 来启用 KCD 进行单一登录。 此设置指定要用于单一登录的标识。
此功能允许组织启用从云到本地应用的 SSO,而无需用户管理不同的用户名和密码。 常见方案包括:
- 将多个内部域(例如,joe@us.contoso.com,joe@eu.contoso.com)与单个云域(例如,joe@contoso.com)一起使用。
- 在使用云中有效域名的同时,内部域名是不可路由的(例如 joe@contoso.usa)。
- 在没有内部域名(例如 joe)的情况下进行操作。
- 为本地和云中的用户分配不同的别名(例如, joe-johns@contoso.com 与) joej@contoso.com。
使用应用程序代理,可以选择用于获取 Kerberos 票证的标识。 此设置按应用程序配置,并支持需要无邮件格式或替代登录方法的系统。
如果使用委派登录标识,则该值在组织中所有域或林中可能不是唯一的。 可以通过使用两个不同的连接器组两次发布这些应用程序来避免此问题。 由于每个应用程序有不同的用户对象,因此可将其连接器加入不同的域。
如果 本地 SAM 帐户名称 用于登录标识,则必须将托管连接器的计算机添加到用户帐户所在的域中。
为不同的标识配置 SSO
配置 Microsoft Entra Connect 设置,使主标识采用电子邮件地址(邮件)。 通过在同步设置中更改 “用户主体名称” 字段,在自定义过程中完成配置。 这些设置同时确定了用户如何登录到 Microsoft 365、Windows 计算机以及其他使用 Microsoft Entra ID 作为标识存储的应用程序。
在要修改的应用程序的“应用程序配置”设置中,选择要使用的委托的登录识别:
- 用户主体名称(例如
joe@contoso.com
) - 备用用户主体名称(例如
joed@contoso.local
) - 用户主体名称的用户名部分(例如
joe
) - 备用用户主体名称的用户名部分(例如
joed
) - 本地 SAM 帐户名(取决于域控制器配置)
- 用户主体名称(例如
排查不同标识的 SSO 问题
如果后端应用程序响应意外的 HTTP 回复,请通过检查连接器计算机中的应用程序代理会话事件登录上的事件 24029 来开始故障排除。 事件详细信息中的“user”字段显示用于委派的标识。 若要启用会话日志,请转到事件查看器,打开 “视图 ”菜单,然后选择“ 显示分析和调试日志”。