Azure AD安全API-GetAccessTokenForUserAsync不包括声明角色

时间:2020-06-08 14:56:04

标签: .net-core azure-active-directory azure-web-app-service

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

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

我缺少什么?

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

是否有另一种方法可以在不发送用户角色的情况下保护我的api?

谢谢

1 个答案:

答案 0 :(得分:0)

由于角色是在客户端应用的注册中定义的,因此只能在其令牌中使用。

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

  1. 还要在API应用注册中定义相同的角色。您还需要在该应用上将角色分配给用户。通过使用组进行角色分配,可以更轻松地完成此任务。
  2. 更改API以使用相同的应用程序注册。现在,您将在访问令牌中获得角色。使用一个应用程序注册可能意味着侵犯了最小特权,因为您想要授予该API或客户端应用程序的任何权限也将被授予另一个应用程序。

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