StoreFront

SAML 身份验证

SAML(安全声明标记语言)是标识和身份验证产品使用的开放标准。使用 SAML,您可以将 StoreFront 配置为将用户重定向到外部身份提供程序进行身份验证。

注意

将 StoreFront 配置为进行 SAML 身份验证以进行内部访问。要进行外部访问,请将 Citrix Gateway 配置为进行 SAML 身份验证,然后将 StoreFront 配置为进行网关直通身份验证。

StoreFront 需要符合 SAML 2.0 标准的身份提供程序 (IdP),例如:

  • 使用 SAML 绑定(而非 WS-Federation 绑定)的 Microsoft AD 联合身份验证服务。有关详细信息,请参阅 AD FS 部署AD FS 操作
  • Citrix Gateway(配置为 IdP)。
  • Microsoft Entra ID。有关详细信息,请参阅 CTX237490

SAML 断言必须包含包含用户 UPN 的 saml:Subject 属性。

要在通过 Workspace 应用程序连接时为应用商店启用或禁用 SAML 身份验证,请在身份验证方法窗口中选择 SAML 身份验证。默认情况下,为应用商店启用 SAML 身份验证也会为该应用商店的所有 Web 站点启用 SAML 身份验证。可以在身份验证方法选项卡上为特定 Web 站点独立配置 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
<!--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 执行。

要使用来自身份提供程序的元数据配置 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"
<!--NeedCopy-->

配置身份提供程序

  1. 单击 SAML 身份验证行中的设置下拉列表,然后单击身份提供程序

    SAML 设置菜单的屏幕截图

    “身份提供程序”窗口的屏幕截图

  2. 选择发布重定向SAML 绑定

  3. 输入身份提供程序的地址

  4. 导入用于对 SAML 令牌进行签名的证书。

  5. 确定保存更改。

配置服务提供商

  1. 单击 SAML 身份验证行中的设置下拉列表,然后单击服务提供商

    “身份提供程序”窗口的屏幕截图

  2. (可选)选择用于对发送给身份提供程序的消息进行签名的导出签名证书

  3. (可选)选择用于解密收到的身份提供程序发送的消息的导出加密证书

  4. 服务提供商标识符已预先填充了应用商店的身份验证服务。

  5. 确定保存更改。

PowerShell SDK

使用 PowerShell SDK:

测试

要测试 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 功能不可用。您可以使用联合身份验证服务提供单点登录。

SAML 身份验证