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

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

我有一个 .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上阅读更多相关信息。 。这是一小段摘录

enter image description here

好的一点是,它是一次性过程(除非管理员在以后故意撤销它),即一旦管理员同意申请,您将不需要重复该过程作为获取 token 或制作的一部分调用您的 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

带有角色的解码 token 示例

以下是在定义和分配自定义应用程序权限(如您的案例)后通过客户端凭据授予获取的示例 token 。

enter image description here

enter image description here

关于.net - 是否可以在客户端凭证流程中为应用程序注册赋予角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55941963/

相关文章:

.net - MailboxProcessor 性能问题

C# 代码无法连接到 Azure SQL 数据库

sql-server - 无法连接到 Azure VM 上的 SQL Server

asp.net - ASP.NET 5 中的应用程序见解

jquery - 跨 2 个帧显示一个 DIV

c# - 我的 .net 应用程序在本地计算机上运行,​​但在从网络位置使用时失败

c# - 如何从 ASP.NET Core 中的 IMemoryCache 中删除(重置)所有对象

c# - 我该如何解决 'Microsoft.AspNetCore.NodeServices.HostingModels.NodeInvocationException'

.net - 用于选择重复组的正则表达式

azure - 如何安全使用Azure Key Vault?