来自 Azure AD 联合的 ID 令牌不包含“角色”声明

时间:2021-02-25 05:39:51

标签: azure azure-active-directory azure-ad-b2c federated-identity azure-ad-b2c-custom-policy

我创建了一个 Azure B2C 租户,并为 Azure Active Directory (AD) 创建了自定义 IDP。 我创建了从 B2C 到联合到 Azure AD 并获取访问令牌的用户流。

我遵循的步骤。

  • 创建了 azure AD 应用程序
  • 生成了一个秘密
  • 创建自定义角色
  • 从 AD 企业应用程序为用户分配自定义角色
  • 在 B2C 中创建了 IDP
  • 创建 B2C 应用
  • 创建登录策略
  • 为联邦添加了 IDP
  • 运行用户流程
  • 通过联盟登录

作为联合的结果,azure AD 成功检索了令牌 (idp_access_token)。但问题是从 azure AD 检索的令牌不包含角色声明。我创建了两个应用程序角色并将它们分配给用户。但是我在令牌中看不到任何角色。

我遵循了以下文档。 https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps

这对联邦无效吗?通过联盟分配应用角色的确切方法是什么。

enter image description here

这是创建 B2C IDP 所需的详细信息。

enter image description here

如何用范围解决方案映射这些细节?

1 个答案:

答案 0 :(得分:2)

需要在Azure AD中创建两个应用,一个代表客户端应用,另一个代表api应用,然后使用客户端应用调用api申请。

首先需要暴露Azure保护的后端应用的API并添加客户端应用:

enter image description here

接下来需要设置api应用AppRole,也就是你自定义的角色,会在manifest中显示。

enter image description here

然后您可以将角色分配给用户。转到企业应用程序>您的 api 应用程序>用户和组。

enter image description here

接下来,转到客户端应用程序,让您的客户端应用程序访问您的后端 api:

  • 在“API 权限”下点击“添加权限”,然后点击“我的 API”标签。
  • 找到您的后端应用程序并选择适当的范围。
  • 点击“添加权限”。
  • 为您的 API 授予管理员许可。

接下来需要使用auth code flow获取访问令牌,需要先登录用户获取授权码,然后使用授权码兑换访问令牌。

>

enter image description here

解析 v2.0 令牌,它包含 scp 声明和 roles 声明。

enter image description here