SAML 身份验证

Last published : Nov 13, 2026
SAML (安全断言标记语言) 是一种开放标准,用于身份和身份验证产品。使用 SAML,您可以将 StoreFront 配置为将用户重定向到外部身份提供程序进行身份验证。
注意
为内部访问配置 StoreFront 的 SAML 身份验证。对于外部访问,请使用 SAML 身份验证配置 Citrix Gateway,然后使用Gateway 直通身份验证配置 StoreFront。
StoreFront 需要符合 SAML 2.0 的身份提供程序 (IdP),例如:
SAML 断言必须包含一个 <saml:NameID> 元素,其中填充了用户的用户主体名称 (UPN)。StoreFront 会在 Active Directory 中查找此 UPN。StoreFront 不支持其他目录中的用户。使用 Entra ID 时,用户必须具有混合身份。
要为应用商店启用或禁用 SAML 身份验证,请在身份验证方法窗口中选择 SAML Authentication。默认情况下,为应用商店启用 SAML 身份验证也会为该应用商店的所有网站启用它。您可以在身份验证方法选项卡上独立禁用或启用每个网站的 SAML 身份验证。

StoreFront™ 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"
输出示例:
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

使用元数据交换进行配置

为简化配置,您可以在身份提供程序和(本例中的)服务提供程序 StoreFront 之间交换元数据(标识符、证书、端点及其他配置)。
如果您的身份提供程序支持元数据导入,则可以将其指向 StoreFront 元数据端点。注意:这必须通过 HTTPS 完成。
要使用身份提供程序的元数据配置 StoreFront,请使用 Update-STFSamlIdPFromMetadata cmdlet,例如:
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"

配置身份提供程序

  1. 单击 SAML 身份验证行中的设置下拉菜单,然后单击身份提供程序。
    SAML 设置菜单的屏幕截图身份提供程序窗口的屏幕截图
  2. 选择 Post 或 Redirect 作为 SAML 绑定。
  3. 输入身份提供程序的地址。
  4. 导入用于签署 SAML 令牌的证书。
  5. 按确定保存更改。

配置服务提供程序

  1. 单击 SAML 身份验证行中的设置下拉菜单,然后单击服务提供程序。
    身份提供程序窗口的屏幕截图
  2. 可选地,选择一个导出签名证书,用于向身份提供程序签署消息。
  3. 可选地,选择一个导出加密证书,用于解密从身份提供程序接收到的消息。
  4. 服务提供商标识符已预填充商店的身份验证服务。
  5. 按确定保存更改。

PowerShell

使用 PowerShell:

测试

要测试 SAML 集成:
  1. 转到 SAML 测试页面,请参阅 StoreFront SAML 端点。
  2. 这会将您重定向到身份提供程序。输入您的凭据。
  3. 您将被重定向回测试页面,该页面显示身份声明和断言。

配置 Delivery Controller™ 以信任 StoreFront

使用 SAML 身份验证时,StoreFront 无法访问用户凭据,因此无法向 Citrix Virtual Apps and Desktops 进行身份验证。因此,您必须配置 Delivery Controller 以信任来自 StoreFront 的请求,请参阅 Citrix Virtual Apps and Desktops 安全注意事项和最佳实践。

单点登录到 VDA

使用 SAML 身份验证时,StoreFront 无法访问用户的凭据,因此默认情况下无法对 VDA 进行单点登录。对于已加入 Active Directory 的资源,请使用 联合身份验证服务 提供单点登录。

已知问题

使用 StoreFront 2607 时,当从 {适用于 iOS 的 Citrix Workspace 应用程序或适用于 Android 的 Citrix Workspace 应用程序} 直接向 StoreFront 使用 SAML 身份验证时,身份验证可能会失败。
  • {适用于 iOS 的 Citrix Workspace 应用程序显示错误“您不能将 \_ri 参数与以下任何参数一起使用:\_cx、\_id、\_cs、\_hf、\_rt 或 \_ps”
  • 适用于 Android 的 Citrix Workspace 应用程序显示错误“对于浏览器,您必须提供以下所有参数:\_cx、\_id 和 \_cs,\_ps 和 \_hf 是可选的。对于本机客户端,必须提供 \_rt,\_ps 是可选的。”.
使用 2607 之前的 StoreFront 时,身份验证可能会失败,并显示 HTTP 错误 404.15 - 未找到。当查询字符串过长并被 IIS 请求筛选阻止时,会发生这种情况。默认情况下,IIS 将查询字符串限制设置为 2048,将总 URL 长度设置为 4096。为解决此问题,请增加最大 URL 和查询字符串长度。
  1. 打开 Internet Information Services (IIS) 管理器。
  2. 在“连接”窗格中,展开服务器并选择身份验证虚拟目录。
  3. 从主窗格中,打开“请求筛选”。
    显示 IIS 管理器中查找请求筛选位置的屏幕截图(/en-us/storefront/current-release/media/stores/authentication/iis-request-filtering-1.png)
  4. 在“操作”窗格中,单击“编辑功能设置...”。
  5. 增加“最大 URL 长度(字节)”和“最大查询字符串(字节)”。
    IIS 管理器请求筛选设置的屏幕截图(/en-us/storefront/current-release/media/stores/authentication/iis-request-filtering-2.png)
  6. 选择“确定”以保存更改。