配置 SAML 应用以接收包含来自外部存储的声明的令牌

本文介绍如何配置 SAML 应用程序以从自定义声明提供程序接收包含外部声明的令牌。

先决条件

在配置 SAML 应用程序以接收包含外部声明的令牌之前,请先遵循以下部分:

配置接收扩充令牌的 SAML 应用程序

单个应用管理员或所有者可以使用自定义声明提供程序来扩充现有应用程序或新应用程序的令牌。 这些应用可以使用 JWT(对于 OpenID 连接)或 SAML 格式的令牌。

以下步骤用于注册演示 XRayClaims 应用程序,以便你可以测试它是否能接收包含扩充声明的令牌。

添加新的 SAML 应用程序

提示

本文中的步骤可能因开始使用的门户而略有不同。

在租户中添加新的非库 SAML 应用程序:

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

  2. 浏览到“标识”>“应用程序”>“企业应用程序”。

  3. 选择“新建应用程序”,然后选择“创建自己的应用程序”。

  4. 为应用添加名称。 例如 AzureADClaimsXRay。 选择“集成未在库中找到的任何其他应用程序(非库)”选项,然后选择“创建”。

为 SAML 配置单一登录

为应用设置单一登录:

  1. 在“概述”页中,选择“设置单一登录”,然后选择“SAML”。 在“基本 SAML 配置”中选择“编辑”。

  2. 选择“添加标识符”,并添加“urn:microsoft:adfs:claimsxray”作为标识符。 如果组织中的另一个应用程序已使用该标识符,则可以使用 urn:microsoft:adfs:claimsxray12 等替代项

  3. 选择“回复 URL”,并将 https://adfshelp.microsoft.com/ClaimsXray/TokenResponse 添加为“回复 URL”。

  4. 选择“保存”。

配置声明

自定义声明提供程序 API 返回的属性不会自动包含在 Microsoft Entra ID 返回的令牌中。 你需要将应用程序配置为引用自定义声明提供程序返回的属性,并将其作为令牌中的声明返回。

  1. 在该新应用的“企业应用程序”配置页上,转到“单一登录”窗格。

  2. 在“属性和声明”部分选择“编辑”

  3. 展开“高级设置”部分。

  4. 对“自定义声明提供程序”选择“配置”。

  5. 在“自定义声明提供程序”下拉列表中选择你之前注册的自定义身份验证扩展。 选择“保存”。

  6. 选择“添加新声明”以添加新声明。

  7. 提供要颁发的声明的名称,例如“DoB”。 (可选)设置命名空间 URI。

  8. 对于“”,选择“属性”,并从“源属性”下拉列表中选择自定义声明提供程序提供的属性。 显示的属性是自定义声明提供程序在自定义声明提供程序配置中定义为“可用”的属性。 自定义声明提供程序提供的属性带有 customclaimsprovider 前缀。 例如 customclaimsprovider.DateOfBirthcustomclaimsprovider.CustomRoles。 这些声明可以是单值或多值,具体取决于 API 响应。

  9. 选择“保存”,将声明添加到 SAML 令牌配置。

  10. 关闭“管理声明”和“属性和声明”窗口。

将用户或组分配给应用

在测试用户登录之前,必须向应用分配一个用户或一组用户。 否则,登录时将返回 AADSTS50105 - The signed in user is not assigned to a role for the application 错误。

  1. 在应用程序的“概述”页中,选择“入门”下的“分配用户和组”。

  2. 在“用户和组”页上,选择“添加用户/组”。

  3. 搜索并选择要登录到应用的用户。 选择“分配”按钮。

测试应用程序

测试是否正在为登录到应用程序的用户扩充令牌:

  1. 在应用概述页中,选择左侧导航栏中的“单一登录”。

  2. 向下滚动并选择“使用 {app name} 测试单一登录”下的“测试”。

  3. 选择“测试登录”并登录。 登录结束时,应会看到令牌响应 Claims X-ray 工具。 如果配置为显示在令牌中的声明具有非 null 值,则应全部列出这些声明(包括使用自定义声明提供程序作为源的任何声明)。

屏幕截图显示来自外部源的声明。

后续步骤

排查自定义声明提供程序 API 的问题

查看 Azure Functions 示例应用的身份验证事件触发器