使用应用程序代理和 PingAccess 通过基于标头的身份验证进行单一登录

Microsoft 与 PingAccess 合作,提供了更多访问应用程序。 除了集成的基于标头的单一登录,PingAccess 还提供另一个选项。

什么是 PingAccess for Microsoft Entra ID?

使用 PingAccess for Microsoft Entra ID,让用户可以访问并单一登录到 (SSO) 到应用程序,以使用标头进行身份验证。 应用程序代理将这些应用程序视为与其他任何应用程序一样,它使用 Microsoft Entra ID 对访问进行身份验证,然后通过连接器服务传递流量。 PingAccess 驻留在应用程序的前面,可将 Microsoft Entra ID 提供的访问令牌转换为标头。 然后,应用程序接收采用可读格式的身份验证令牌。

用户登录后使用企业应用程序时,不会感觉到任何差异。 应用程序仍可在任何位置的任何设备上工作。 专用网络连接器会将远程流量定向到所有应用(不管其身份验证类型如何),因此它们仍会自动均衡负载。

如何获取访问权限?

需要 PingAccess 和 Microsoft Entra ID 的许可证。 但 Microsoft Entra ID P1 或 P2 订阅包含一个 PingAccess 基本许可证,可涵盖多达 20 个应用程序。 如果需要发布 20 个以上基于标头的应用程序,可以从 PingAccess 购买更多许可证。

有关详细信息,请参阅 Microsoft Entra 版本

在 Microsoft Entra 中发布应用程序

本文概述了首次发布应用程序的步骤。 本文提供有关应用程序代理和 PingAccess 的指南。

注意

Ping 标识站点上存在一些说明。

安装专用网络连接器

专用网络连接器是一项 Windows Server 服务,可将来自远程员工的流量定向到已发布的应用程序。 有关更详细的安装说明,请查看教程:添加本地应用程序以通过 Microsoft Entra ID 中的应用程序代理进行远程访问

  1. 至少以应用程序管理员的身份登录到 Microsoft Entra 管理中心
  2. 浏览到“标识”>“应用程序”>“企业应用程序”>“应用程序代理”。
  3. 选择“下载连接器服务” 。
  4. 按照安装说明进行操作。

下载连接器时应会自动为目录启用应用程序代理,但如果没有,可选择“启用应用程序代理”

使用应用程序代理将应用程序添加到 Microsoft Entra ID

可通过两个步骤将应用程序添加到 Microsoft Entra ID。 首先,需要使用应用程序代理发布应用程序。 然后,需要收集应用程序的信息,以便在执行 PingAccess 步骤期间使用。

发布应用程序

首先,发布应用程序。 操作涉及:

  • 将本地应用程序添加到 Microsoft Entra ID。
  • 分配用户来测试应用程序并选择基于标头的单一登录。
  • 设置应用程序的重定向 URL。
  • 为用户和其他应用程序授予使用本地应用程序的权限。

若要发布自己的本地应用程序:

  1. 以应用程序管理员的身份登录到 Microsoft Entra 管理中心

  2. 转到“企业应用程序”>“新应用程序”>“添加本地应用程序”。 随即显示“添加自己的本地应用程序”页。

    添加自己的本地应用程序

  3. 在必填字段中填写新应用程序的相关信息。 使用设置指南。

    注意

    有关此步骤的更详细演练,请查看将本地应用添加到 Microsoft Entra ID

    1. 内部 URL:在公司网络上时,通常提供转到应用登录页面的 URL。 对于此方案,连接器需要将 PingAccess 代理视为应用程序的首页。 使用此格式:https://<host name of your PingAccess server>:<port>。 默认情况下端口为 3000,但可以在 PingAccess 中对其进行配置。

      警告

      对于此类型的单一登录,内部 URL 必须使用 https,不能使用 http。 此外,没有两个应用程序应该具有相同的内部 URL,因此应用程序代理可以保持对它们的区别。

    2. 预身份验证方法:选择“Microsoft Entra ID”

    3. 转换标头中的 URL:选择“否”。

    注意

    如果这是第一个应用程序,则从使用端口 3000 开始,如果更改了 PingAccess 配置,则返回以更新此设置。 对于后续应用程序,端口将需要与已在 PingAccess 中配置的侦听器匹配。

  4. 选择 添加 。 此时将显示新应用程序的概述页面。

现在分配用户来测试应用程序,并选择基于标头的单一登录:

  1. 从应用程序边栏中,选择“用户和组”>“添加用户”>“用户和组(已选择 <数量> 个)”。 此时会显示用户和组的列表供你选择。

    显示用户和组的列表

  2. 选择要测试应用程序的用户,然后选中“选择”。 确保此测试帐户有权访问本地应用程序。

  3. 选择“分配”。

  4. 从应用程序边栏中,选择“单一登录”>“基于标头” 。

    提示

    如果这是第一次使用基于标头的单一登录,则需安装 PingAccess。 为了确保 Microsoft Entra 订阅与 PingAccess 安装自动关联,请使用此单一登录页上的链接下载 PingAccess。 可以现在就打开下载站点,也可以稍后返回到此页面。

    显示“基于标头的登录”屏幕和 PingAccess

  5. 选择“保存”。

然后,确保将重定向 URL 设置为外部 URL:

  1. 浏览到“标识”>“应用程序”>“应用注册”,然后选择你的应用程序。
  2. 选择重定向 URI 旁边的链接。 此链接显示 Web 和公共客户端的重定向统一资源标识符 (URI) 设置量。 此时将显示“<应用程序名称> - 身份验证”页。
  3. 检查“重定向 URI”列表中是否有前面分配给应用程序的外部 URL。 如果没有,现在请使用重定向 URI 类型“Web”,然后选择“保存”来添加外部 URL 。

除了外部 URL,还应将外部 URL 上 Microsoft Entra ID 的授权终结点添加到重定向 URI 列表中。

https://*.msappproxy.net/pa/oidc/cb https://*.msappproxy.net/

最后,设置本地应用程序,以便用户具有 read 访问权限,而其他应用程序具有 read/write 访问权限:

  1. 从应用程序的“应用注册”边栏中,选择“API 权限”>“添加权限”>“Microsoft API”>“Microsoft Graph” 。 此时会显示 Microsoft Graph 的“请求 API 权限”页面,其中包含 Microsoft Graph 的权限。

    显示“请求 API 权限”页面

  2. 选择“委托权限”>“用户”>“User.Read” 。

  3. 选择“应用程序权限”>“应用程序”>“Application.ReadWrite.All” 。

  4. 选择“添加权限”。

  5. 在“API 权限”页面中,选择“为 <目录名称> 授予管理员同意”。

收集 PingAccess 步骤的信息

收集三个全局唯一标识符 (GUID)。 使用 GUID 通过 PingAccess 设置应用程序。

“Microsoft Entra 的名称”字段 PingAccess 名称字段 数据格式
应用程序(客户端) ID 客户端 ID GUID
目录(租户)ID 颁发者 GUID
PingAccess key 客户端机密 随机字符串

若要收集此信息:

  1. 浏览到“标识”>“应用程序”>“应用注册”,然后选择你的应用程序。

  2. 在“应用程序(客户端) ID”值旁边,选择“复制到剪贴板”图标,然后复制并保存 。 稍后将此值指定为 PingAccess 的客户端 ID。

  3. 在“目录(租户) ID”值旁边,也选择“复制到剪贴板”,然后复制并保存 。 稍后将此值指定为 PingAccess 的颁发者。

  4. 从应用程序的“应用注册”边栏中,选择“证书和机密”>“新建客户端密码” 。 此时会显示“添加客户端密码”页面。

    显示“添加客户端密码”页面

  5. 在“说明”中,键入 PingAccess key

  6. 在“过期时间”下,选择设置 PingAccess 密钥的方式:“1 年”、“2 年”或“从不” 。

  7. 选择 添加 。 此时客户端密码表中会显示 PingAccess 密钥,并在“值”字段中自动填充一个随机字符串。

  8. 在 PingAccess 密钥的“值”字段旁边,选择“复制到剪贴板”图标,然后复制并保存 。 稍后将此值指定为 PingAccess 的客户端密码。

更新 acceptMappedClaims 字段:

  1. 至少以应用程序管理员的身份登录到 Microsoft Entra 管理中心
  2. 请在右上角选择用户名。 验证是否已登录到使用应用程序代理的目录。 如果需要更改目录,请选择“切换目录”,然后选择使用应用程序代理的目录
  3. 浏览到“标识”>“应用程序”>“应用注册”,然后选择你的应用程序。
  4. 从应用程序的“应用注册”页面的边栏中,选择“清单” 。 此时将显示应用程序注册的清单 JSON 代码。
  5. 搜索 acceptMappedClaims 字段,并将值更改为 True
  6. 选择“保存”。

使用可选声明(可选)

通过可选声明,可添加每个用户和租户具有的标准但不默认包含的声明。 可修改应用程序清单来配置应用程序的可选声明。 有关详细信息,请查看“了解 Microsoft Entra 应用程序清单”一文.

例如,将电子邮件地址包含到 PingAccess 使用的 access_token 中:

    "optionalClaims": {
        "idToken": [],
        "accessToken": [
            {
                "name": "email",
                "source": null,
                "essential": false,
                "additionalProperties": []
            }
        ],
        "saml2Token": []
    },

使用声明映射策略(可选)

声明映射允许通过添加更多支持 Active Directory 联合身份验证服务 (ADFS) 或用户对象的自定义声明,将旧的本地应用迁移到云。 有关详细信息,请参阅声明自定义

使用自定义声明并在应用程序中包括更多字段。 创建了自定义声明映射策略并将其分配给应用程序

注意

若要使用自定义声明,还必须定义自定义策略并将其分配给应用程序。 该策略应包括所有必需的自定义属性。

可通过 PowerShell 或 Microsoft Graph 执行策略定义和分配。 如果在 PowerShell 中执行这些操作,可能需要先使用 New-AzureADPolicy,然后使用 Add-AzureADServicePrincipalPolicy 将新策略分配给应用程序。 有关详细信息,请查看声明映射策略分配

示例:

$pol = New-AzureADPolicy -Definition @('{"ClaimsMappingPolicy":{"Version":1,"IncludeBasicClaimSet":"true", "ClaimsSchema": [{"Source":"user","ID":"employeeid","JwtClaimType":"employeeid"}]}}') -DisplayName "AdditionalClaims" -Type "ClaimsMappingPolicy"

Add-AzureADServicePrincipalPolicy -Id "<<The object Id of the Enterprise Application you published in the previous step, which requires this claim>>" -RefObjectId $pol.Id

使 PingAccess 能够使用自定义声明

可选择性地使 PingAccess 能够使用自定义声明,但如果希望应用程序使用其他声明,则需要此选项。

在以下步骤中配置 PingAccess 时,要创建的 Web 会话(“设置”->“访问”->“Web 会话”)必须取消选择“请求配置文件”,并将“刷新用户属性”设置为“否”

下载 PingAccess 并配置应用程序

有关此方案的 PingAccess 部分的详细步骤,可查看 Ping Identity 文档。

若要创建 Microsoft Entra ID OpenID Connect (OIDC) 连接,请使用从 Microsoft Entra 管理中心复制的“目录(租户) ID”值设置令牌提供程序。 在 PingAccess 上创建 Web 会话。 使用 Application (client) IDPingAccess key 值。 设置标识映射并创建虚拟主机、站点和应用程序。

测试应用程序

应用程序已启动并正在运行。 若要测试应用程序,请打开浏览器,并导航到在 Microsoft Entra 中发布该应用程序时创建的外部 URL。 使用分配给应用程序的测试帐户登录。

后续步骤