SAML 身份验证
SAML(安全断言标记语言)是一种开放标准,用于身份和身份验证产品。使用 SAML,您可以将 StoreFront 配置为将用户重定向到外部身份提供程序进行身份验证。
注意
为内部访问配置 StoreFront 的 SAML 身份验证。对于外部访问,请配置 Citrix Gateway 的 SAML 身份验证,然后使用Gateway 直通身份验证配置 StoreFront。
StoreFront 需要符合 SAML 2.0 的身份提供程序 (IdP),例如:
- Microsoft AD 联合身份验证服务使用 SAML 绑定(而非 WS-Federation 绑定)。有关详细信息,请参阅 CTX220638。
- Citrix Gateway(配置为身份提供程序)。
- 微软 Entra 身份识别。有关详细信息,请参阅 CTX237490。
SAML 断言必须包含一个<saml:NameID>元素,其中填充了用户的用户主体名称 (UPN)。StoreFront 会在 Active Directory 中查找此 UPN。StoreFront 不支持其他目录中的用户。使用 Entra ID 时,用户必须具有混合身份。
要为应用商店启用或禁用 SAML 身份验证,请在(/zh-cn/storefront/current-release/stores/authentication/)窗口中选择SAML 身份验证。默认情况下,为应用商店启用 SAML 身份验证也会为该应用商店的所有网站启用它。您可以在(/zh-cn/storefront/current-release/stores/websites/authentication-methods.html)选项卡上独立禁用或启用每个网站的 SAML 身份验证。
店面 SAML 端点
要配置 SAML,您的身份提供程序可能需要以下端点:
- 实体 ID 的 URL。这是应用商店身份验证服务的路径,通常为
https://[storefront host]/Citrix/[StoreName]Auth - 断言使用者服务的 URL,通常为
https://[storefront host]/Citrix/[StoreName]Auth/SamlForms/AssertionConsumerService - 元数据服务,通常为
https://[storefront host]/Citrix/[StoreName]Auth/SamlForms/ServiceProvider/Metadata
此外还有一个测试端点,通常是 https://[storefront host]/Citrix/[StoreName]Auth/SamlTest
您可以使用以下 PowerShell 脚本列出指定商店的端点。
# Change this value for your Store
$storeVirtualPath = "/Citrix/Store"
$auth = Get-STFAuthenticationService -Store (Get-STFStoreService -VirtualPath $storeVirtualPath)
$spId = $auth.AuthenticationSettings["samlForms"].SamlSettings.ServiceProvider.Uri.AbsoluteUri
$acs = New-Object System.Uri $auth.Routing.HostbaseUrl, ($auth.VirtualPath + "/SamlForms/AssertionConsumerService")
$md = New-Object System.Uri $auth.Routing.HostbaseUrl, ($auth.VirtualPath + "/SamlForms/ServiceProvider/Metadata")
$samlTest = New-Object System.Uri $auth.Routing.HostbaseUrl, ($auth.VirtualPath + "/SamlTest")
Write-Host "SAML Service Provider information:
Entity ID: $spId
Assertion Consumer Service: $acs
Metadata: $md
Test Page: $samlTest"
<!--NeedCopy-->
以下是输出的示例:
SAML Service Provider information:
Entity ID: https://storefront.example.com/Citrix/StoreAuth
Assertion Consumer Service: https://storefront.example.com/Citrix/StoreAuth/SamlForms/AssertionConsumerService
Metadata: https://storefront.example.com/Citrix/StoreAuth/SamlForms/ServiceProvider/Metadata
Test Page: https://storefront.example.com/Citrix/StoreAuth/SamlTest
<!--NeedCopy-->
使用元数据交换进行配置
为简化配置,您可以在身份提供程序和服务提供程序(在本例中为 StoreFront)之间交换元数据(标识符、证书、端点和其他配置)。
如果您的身份提供程序支持元数据导入,则可以将其指向 StoreFront 元数据端点。注意:这必须通过 HTTPS 完成。
To configure StoreFront using the metadata from an Identity Provider, use the Update-STFSamlIdPFromMetadata cmdlet, for example:
Get-Module "Citrix.StoreFront*" -ListAvailable | Import-Module
# Remember to change this with the virtual path of your Store.
$StoreVirtualPath = "/Citrix/Store"
$store = Get-STFStoreService -VirtualPath $StoreVirtualPath
$auth = Get-STFAuthenticationService -StoreService $store
# To read the metadata directly from the Identity Provider, use the following:
# Note again this is only allowed for https endpoints
Update-STFSamlIdPFromMetadata -AuthenticationService $auth -Url https://example.com/FederationMetadata/2007-06/FederationMetadata.xml
# If the metadata has already been download, use the following:
# Note: Ensure that the file is encoded as UTF-8
Update-STFSamlIdPFromMetadata -AuthenticationService $auth -FilePath "C:\Users\exampleusername\Downloads\FederationMetadata.xml"
<!--NeedCopy-->
配置身份提供程序
-
单击 SAML 身份验证行中的设置下拉菜单,然后单击 身份提供程序。


-
选择 SAML 绑定 为 提交 或 重定向。
-
输入身份提供程序的地址。
-
导入用于签署 SAML 令牌的证书。
-
按 OK 保存更改。
配置服务提供商
-
在 SAML 身份验证 行中单击设置下拉菜单,然后单击 服务提供商。
身份提供商窗口的屏幕截图(/zh-cn/storefront/current-release/media/stores/authentication/saml-service-provider.png)
-
(可选)选择一个 导出签名证书,用于向身份提供商签署消息。
-
(可选)选择一个 导出加密证书,用于解密从身份提供商接收到的消息。
-
服务提供商标识符 已预先填充商店的身份验证服务。
-
按 确定 保存更改。
PowerShell
-
To import a signing certificate call cmdlet Import-STFSamlSigningCertificate.
-
To import an encryption certificate call cmdlet Import-STFSamlEncryptionCertificate.
测试
要测试 SAML 集成:
- 请访问用于 SAML 认证的测试页面,有关详细信息,请参阅 StoreFront SAML 端点。
- 这会将您重定向到身份提供商。输入您的凭据。
- 您将被重定向回测试页面,该页面会显示身份声明和断言。
配置 交付控制器™ 以信任 店面
使用 SAML 身份验证时,StoreFront 无法访问用户的凭据,因此无法向 Citrix 虚拟应用和桌面 进行身份验证。因此,您必须配置 交付控制器 以信任来自 StoreFront 的请求,请参阅 Citrix 虚拟应用和桌面 安全注意事项和最佳实践。
对 VDA 进行单点登录
使用 SAML 身份验证时,StoreFront 无法访问用户凭据,因此默认情况下无法对 VDA 进行单点登录。对于已加入 Active Directory 的资源,请使用 Federated Authentication Service 提供单点登录。
已知问题
身份验证可能会因 HTTP 错误 404.15 - 未找到而失败。当查询字符串过长并被 IIS 请求筛选阻止时,会发生这种情况。默认情况下,IIS 将查询字符串限制设置为 2048,总 URL 长度设置为 4096。要解决此问题,请增加最大 URL 和查询字符串长度。
-
打开 互联网信息服务 (IIS) 管理器。
-
在“连接”窗格中,展开服务器并选择身份验证虚拟目录。
-
从主窗格中,打开“请求筛选”。

-
在“操作”窗格中,单击“编辑功能设置…”
-
增加“最大 URL 长度(字节)”和“最大查询字符串(字节)”。

-
选择“确定”以保存更改。