簡體   English   中英

我如何分配給 azure 廣告中具有特定角色的用戶?

[英]How i can assign to user with specific role in azure ad?

在 .NET 核心 web 應用程序中,我有不同的用戶角色(管理員、用戶),基於此我想使用 Azure 廣告應用程序角色顯示不同的頁面。

我如何將具有特定角色的用戶分配給 azure 廣告應用程序?

由於 API 調用的數量,目前我正在使用中間件方法從數據庫中獲取用戶角色。

如果您想將用戶分配給該應用程序,在指定的應用程序角色之一中,您需要為用戶設置appRoleAssignment 如果您使用的是 Microsoft Graph API,則可以使用以下 rest API:

https://graph.microsoft.com/v1.0/users/cde330e5-2150-4c11-9c5b-14bfdc948c79/appRoleAssignments
Content-Type:application/json
Authorization: Bearer {token}
{

  "principalId": "9028d19c-26a9-4809-8e3f-20ff73e2d75e",
  "resourceId": "8fce32da-1246-437b-99cd-76d1d4677bd5",
  "appRoleId": "498476ce-e0fe-48b0-b801-37ba7e2685c6"
}
  • principalId :您要為其分配應用程序角色的客戶端服務主體的 ID。

  • appRoleId :分配給客戶端服務主體的 appRole 的 ID(在資源服務主體上定義)。

  • resourceId :應用程序的服務主體 ID。 要獲取服務主體 ID,您可以使用以下 API( objectId聲明):

Get https://graph.microsoft.com/v1.0/servicePrincipals/{your resourceId}

如果要過濾則:

  https://graph.microsoft.com/v1.0/servicePrincipals/{id}&$filter=appId eq 'appid'

注意: 有關服務主體的詳細信息,您可以查看官方文檔

獲取 appRoleId:

您可以通過調用下面的圖 API 來獲取應用程序角色Id

GET https://graph.microsoft.com/v1.0/applications?$select=displayName, appId, appRoles&$filter=startswith(displayName, 'App-Name')

在此處輸入圖像描述

在此處輸入圖像描述

有關詳細信息,您可以查看我們的官方文檔

使用圖 C# 庫添加到@Md Farid Uddin Kiron 答案。 (用於將用戶分配給 azure 中的 approles)

PrincipalId:您要為其分配應用程序角色的客戶端服務主體的 ID。 =>(又名要為其分配權限的用戶的 object Id)

ResourceId:已定義應用程序角色(應用程序權限)的資源 servicePrincipal(API)的 id =>(又名定義了您的角色的應用程序的服務主體的 id,它是 object Id)通過 REST 找到

https://graph.microsoft.com/v1.0/servicePrincipals/{id}&$filter=appId eq 'appid'

或者on portal.azure.com => Azure Active Directory => Enterprise Application => Select your application => Overview => ObjectId Image Description

AppRoleId:分配給客戶端服務主體的 appRole(在資源服務主體上定義)的 ID。

GraphServiceClient graphClient = new GraphServiceClient( authProvider ); 
var resourceId = await graphClient.ServicePrincipals["00ea0040-e0028-00aa-0000-aa00a0cd000"].Request().GetAsync();
var principalId = await graphClient.Users["youruser@email.com"].Request().GetAsync(); 
var appId = resourceId.AppRoles.Where(x => x.DisplayName.Equals("specificRole", StringComparison.OrdinalIgnoreCase)).FirstOrDefault().Id;

//在下面傳遞之前對上面的變量執行檢查

var appRoleAssignment = new AppRoleAssignment
{
   PrincipalId = Guid.Parse(principalId.Id),
   ResourceId = Guid.Parse(resourceId.Id),
   AppRoleId = appId
};
                

await graphClient.Users[principalId.Id].AppRoleAssignments
      .Request()
      .AddAsync(appRoleAssignment);

檢查文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM