是否可以在客户端凭据流中为应用程序注册赋予角色?

时间:2019-05-01 19:57:23

标签: .net azure asp.net-core azure-active-directory

我有一个由客户端“ B”和客户端“ C”调用的.Net Core Web API“ A”。

我想通过授予客户端C角色来限制对API某些部分的访问?

我已阅读本指南 https://joonasw.net/view/defining-permissions-and-roles-in-aad

但这需要应用程序的同意。我想绕过该同意书,因为这些都是后台应用程序。

谢谢

2 个答案:

答案 0 :(得分:0)

首先,您要基于博客(非常详细)尝试采用的方法是正确的,并且可以正常工作。最后,我将展示基于此方法获取的示例令牌。

  

我想绕过该同意书,因为这些都是后台应用程序。

您将无法绕过应用程序权限的管理员同意过程。

您可以在Microsoft Docs上了解有关此内容的更多信息。这是一个小摘录

enter image description here

好消息是,这是一个一次性的过程(除非管理员在以后的某个时间有意将其撤消),即,一旦管理员同意了申请,您就无需重复此过程来获取令牌或进行认证。调用您的API。

选项

  1. 使用管理员同意端点。这是最普通和方便的方法。您可以在此处了解更多信息。Request Permissions from Directory Admin

     GET https://login.microsoftonline.com/{tenant}/adminconsent?client_id={yourclientid}&state=12345&redirect_uri=http://localhost/myapp/permissions
    
  2. 使用Azure AD Graph API为服务主体创建appRoleAssignment

具有角色的示例解码令牌

这是在定义和分配自定义应用程序权限(如您的案例)之后通过客户端证书授予获得的示例令牌。

enter image description here

enter image description here

答案 1 :(得分:0)

您可以在新的Azure AD门户中使用应用程序注册的“公开Api”刀片中的“授权客户端应用程序”部分来预先同意应用程序。

here提供了您要尝试的方案的代码遍历。