基于 OIDC Entra ID 的身份验证 (预览版)
本节介绍如何配置 NetScaler 和 StoreFront,以便用户可以使用 Entra ID 进行身份验证。在此配置中,用户可以拥有混合身份,也可以拥有不带 Active Directory 帐户的纯 Entra 身份。
重要提示:
Entra ID 到 VDA 的单点登录目前处于预览阶段。此功能不提供支持,并且尚不建议在生产环境中使用。
先决条件
- NetScaler 应用交付控制器
- StoreFront 2603 or higher
- Microsoft Entra ID 以及具有以下权限之一的帐户:
- 云应用程序管理员
- 应用程序管理员
- 全局管理员
Create a Microsoft Azure Entra ID application
Microsoft Entra ID 中的应用程序注册定义了您的应用程序,以便 Entra ID 能够识别它(在本例中为 NetScaler OIDC)。此注册还管理应用程序的身份验证和授权请求。由于 OAuth 需要受信任的身份提供程序 (IdP) 来验证用户身份并颁发令牌,因此注册您的应用程序会告知 Entra ID:“此应用程序使用您作为其 OAuth 流程的 IdP。”
- 请登录到您用于 NetScaler 或 StoreFront 身份验证的 Entra ID 租户所对应的 Azure 门户。
- 转到 Microsoft Entra ID 资源 > 管理 > 应用注册,然后选择新建注册。
- 为应用程序命名,例如,NetScaler StoreFront 身份验证。
- 在 支持的帐户类型 下,选择 仅此组织目录中的帐户。
-
在 重定向 URI 下,为要创建的应用程序类型选择 Web。输入发送访问令牌的 URI。使用格式 <NetScaler Virtual Server URL>/oauth/login,例如
https://netscalerentra.customer.com/oauth/login。
创建客户端密钥
要创建客户端密钥:
- 注册应用程序后,转到 管理 > 证书和密钥。
- 选择 客户端密钥,然后选择 新建客户端密钥。 您的应用程序使用这些凭据与 IdP 安全通信并请求令牌。
- 提供密钥的描述和持续时间。
- 创建密钥后,请记录密钥值,因为您在设置过程中稍后需要它,并且它仅在此创建阶段可见。

配置应用程序的权限
要配置应用程序权限:
- 转到 管理 > 应用注册,然后选择您的应用程序。
- 选择 管理 > API 权限。
- User.Read 权限已默认添加。
- Add openid and profile.
- 选择 授予管理员同意 <租户名称> 并接受。
Microsoft Entra ID 中 API 权限中的“授予管理员同意”表示管理员代表组织中的所有用户批准应用程序使用请求的权限访问特定资源或 API。

对 Citrix DaaS 进行配置以启用 XML 信任
默认情况下,Citrix DaaS 使用用户的 Active Directory 凭据对请求进行身份验证。使用 Entra ID 身份验证时,StoreFront 没有凭据。因此,您必须将 DaaS 配置为信任 StoreFront,而无需进行身份验证。强烈建议您启用安全密钥以提供服务级别身份验证。
- Sign in to Citrix Cloud and go to the DaaS console.
- 转到设置。
-
启用 XML 信任。

- (可选步骤)为了增强安全性,您可以在 DaaS 和 StoreFront 之间启用安全密钥。有关详细信息,请参阅 Citrix DaaS™ 文档中的管理安全密钥。
配置 NetScaler 身份验证配置文件
本节介绍如何配置可绑定到网关 VPN 虚拟服务器的 NetScaler 身份验证配置文件。此配置告知 ADC 如何将用户重定向到外部 OAuth IdP(例如 Microsoft Entra ID)进行登录,以及如何处理身份验证后收到的 OAuth 令牌。它指定了端点、客户端凭据、范围以及 ADC 如何从令牌中提取用户信息。
您需要前面步骤中的客户端密钥和 Microsoft Entra ID 身份验证端点。您可以通过转到 Azure 门户中的“应用注册概述”并单击“终结点”选项卡来查找身份验证端点。
创建身份验证虚拟服务器
身份验证虚拟服务器处理用户身份验证。
add authentication vserver EntraId_Authentication_VirtualServer SSL 0.0.0.0 443 \
-state ENABLED \
-authentication ON \
-td 0 -appflowLog ENABLED \
-noDefaultBindings NO
<!--NeedCopy-->
创建 OAuth 策略和操作
OAuth 操作指定 NetScaler ADC 如何与 OAuth IdP(例如 Microsoft Entra ID)交互。此操作允许 Citrix Gateway 将用户重定向到 IdP 进行登录并处理返回的 OAuth 令牌。它将 userNameField 设置为 oid,这会导致网关在向 StoreFront 进行身份验证时将 OID 作为用户名传递。StoreFront 验证 OID 是否与通过查找 Entra ID 访问令牌获得的信息匹配,否则身份验证将失败。
您需要前几个步骤中的客户端 ID 和客户端密钥。
add authentication OAuthAction EntraId_Oauth_Server \
-authorizationEndpoint "https://login.microsoftonline.com/<TenantId>/oauth2/v2.0/authorize\?prompt=login" \
-tokenEndpoint "https://login.microsoftonline.com/<TenantId>/oauth2/v2.0/token" \
-clientID <ClientId> \
-clientSecret <ClientSecret> \
-Attribute1 email \
-Attribute2 family_name \
-Attribute3 given_name \
-Attribute4 upn \
-CertEndpoint "https://login.microsoftonline.com/<TenantId>/discovery/v2.0/keys" \
-userNameField oid \
-allowedAlgorithms HS256 RS256 RS512 \
-PKCE ENABLED \
-tokenEndpointAuthMethod client_secret_post \
-OAuthType GENERIC \
-grantType CODE \
-refreshInterval 1440
add authentication Policy EntraId_Authentication_Policy \
-rule true \
-action EntraId_Oauth_Server
<!--NeedCopy-->
authorizationEndpoint 包含查询字符串参数 prompt=login,以便用户在尝试通过 NetScaler 访问 StoreFront 时被迫重新进行身份验证。
将身份验证策略绑定到虚拟服务器
bind authentication vserver EntraId_Authentication_VirtualServer \
-policy EntraId_Authentication_Policy \
-priority 100 \
-gotoPriorityExpression END
<!--NeedCopy-->
创建身份验证配置文件
add authentication authnProfile EntraId_Auth_Profile \
-authnVsName EntraId_Authentication_VirtualServer \
-AuthenticationLevel 0
<!--NeedCopy-->
创建 VPN 虚拟服务器并绑定身份验证配置文件
使用前面步骤中创建的身份验证配置文件,完成 将 NetScaler Gateway 与 StoreFront 集成 中的步骤 1、2 和 4。
或者,如果您已有合适的 Citrix Gateway,则可以将新的身份验证配置文件绑定到它。运行此命令会替换现有的身份验证配置文件。
set vpn vserver <StoreFront ICA Proxy vServer> \
-authentication ON \
-authnProfile EntraId_Auth_Profile
<!--NeedCopy-->
用于 StoreFront 单点登录的 Entra ID 令牌注入配置
Citrix Gateway 验证用户身份后,必须将足够的信息传递给 StoreFront,以便 StoreFront 能够验证用户是否已通过身份验证并查找组成员身份。默认情况下,Citrix Gateway 仅发送 Active Directory 用户名和密码。在 Entra ID 身份验证的情况下,它必须传递 Entra ID 访问令牌,以便 StoreFront 可以使用 Microsoft Graph API 查找用户信息。为此,您必须添加一个重写策略,将 Entra ID 令牌添加到它用于向 StoreFront 验证用户身份的调用中。如果重写 Entra ID 访问令牌策略不生效,则登录将失败。如果重写策略功能默认禁用且尚未启用,则必须首先启用它。
enable ns feature Rewrite
add rewrite action EntraId_Oauth_Insert_AccessToken_Header insert_http_header X-Citrix-OIDC-Access-Token "AAA.USER.ATTRIBUTE(\"accesstoken\")" \
-comment "A rewrite policy to add the OAUTH access_token to subsequent user authentication requests"
add rewrite policy EntraId_Oauth_Insert_AccessToken_Policy "HTTP.REQ.URL.TO_LOWER.ENDSWITH(\"gatewayauth/login\") || HTTP.REQ.URL.TO_LOWER.ENDSWITH(\"citrixagbasic/authenticate\")" EntraId_Oauth_Insert_AccessToken_Header \
-comment "A rewrite policy to add the OAUTH access_token to subsequent user authentication requests"
bind vpn vserver <StoreFront ICA Proxy vServer> \
-policy EntraId_Oauth_Insert_AccessToken_Policy \
-priority 100 \
-gotoPriorityExpression END \
-type REQUEST
<!--NeedCopy-->
Configure Citrix Gateway within StoreFront
-
-
将登录类型设置为 域。
-
指定一个有效的回调 URL。这对于与 StoreFront 配合使用的 Entra ID 身份验证是必需的。
-
-
配置用于远程访问的网关,用于聚合 Citrix DaaS 资源的 Store。
-
在 管理身份验证方法 屏幕上,启用 从 Citrix Gateway 直通 并配置 Entra ID 设置