我有一个 .Net Core Web API“A”,客户端“B”和客户端“C”都在调用它。
我想通过授予客户端 C 角色来限制对 API 某些部分的访问?
我已阅读本指南 https://joonasw.net/view/defining-permissions-and-roles-in-aad
但它需要应用程序同意。我想绕过该同意,因为这些都是后台应用程序。
谢谢
最佳答案
首先,您尝试根据博客(非常详细)遵循的方法是正确的并且工作正常。我将在最后展示基于此方法获取的示例 token 。
I want to bypass that consent since these are all background apps.
您将无法绕过应用程序权限的管理员同意流程。
您可以在Microsoft Docs上阅读更多相关信息。 。这是一小段摘录
好的一点是,它是一次性过程(除非管理员在以后故意撤销它),即一旦管理员同意申请,您将不需要重复该过程作为获取 token 或制作的一部分调用您的 API。
选项:
使用管理员同意端点。这是最常见、最方便的方式。您可以在这里阅读更多相关信息.. Request Permissions from Directory Admin
GET https://login.microsoftonline.com/{tenant}/adminconsent?client_id={yourclientid}&state=12345&redirect_uri=http://localhost/myapp/permissions
使用 Azure AD Graph API 为服务主体创建
appRoleAssignment
。
带有角色的解码 token 示例
以下是在定义和分配自定义应用程序权限(如您的案例)后通过客户端凭据授予获取的示例 token 。
关于.net - 是否可以在客户端凭证流程中为应用程序注册赋予角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55941963/