Azure AD Securing API - GetAccessTokenForUserAsync 不包含声明角色



我有一个调用API的网站。要从网站调用API,我首先使用GetAccessTokenForUserAsync(scope(获得一个jwt令牌。

我的问题是此方法不会在 jwt 令牌中检索用户的角色。 我的 user.identity.claims 有几个角色,但它们不包含在 jwt 令牌中。

我错过了什么?

我将尝试在 jwt 令牌中包含角色,因为我需要保护我的 api 方法。例如,一个方法只能由 AdminMember 调用,其他方法只能由 SpecialMember 调用。

有没有其他方法可以在不发送用户角色的情况下保护我的 API?

谢谢

由于角色是在客户端应用的注册中定义的,因此它们仅在其令牌中可用。

因此,基本上有两种选择:

  1. 还要在 API 应用注册中定义相同的角色。您还需要将该应用上的角色分配给用户。通过将组用于角色分配,可以更轻松地执行此操作。
  2. 更改 API 以使用相同的应用注册。现在,你将获取访问令牌中的角色。使用一个应用注册可能意味着违反最低权限,因为此时要授予 API 或客户端应用的任何权限也将授予另一个应用。

根据您的情况,您可以选择任一选项:)

最新更新