来自 Azure AD 联合的 ID 令牌不包含 "roles" 声明

ID token from Azure AD federation does not contains "roles" claim

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

我遵循的步骤。

作为联合的结果,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

这不是对联邦有效吗?通过联合获取分配的应用程序角色的确切方法是什么。

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

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

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

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

接下来您需要设置api应用程序AppRole,这是您自定义的角色,它会显示在manifest中。

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

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

  • 在 'API permissions' 下单击 'Add permission',然后单击 'My APIs' 选项卡。
  • 找到您的后端应用程序和select适当的范围。
  • 点击'Add permissions'。
  • 为您的 API 授予管理员许可。

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

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