Как назначить роль новому пользователю с помощью Graph APIC#

Место общения программистов C#
Ответить
Anonymous
 Как назначить роль новому пользователю с помощью Graph API

Сообщение Anonymous »

У меня есть приложение React и веб-API .NET 8 с собственными регистрациями приложений в клиенте MS Entra external ID. Аутентификация осуществляется с помощью msal-react, а на серверной стороне я использую Microsoft.Identity.Web.
Я хотел бы программно назначить роль пользователю после его успешной регистрации. поскольку некоторым конечным точкам веб-API требуется эта роль для аутентификации. Я просматривал документацию MS, но немного застрял в общей картине ее реализации.
В этой статье MS показан следующий код для отправки запроса на назначение роли через API графов:

Код: Выделить всё

// Dependencies
using Microsoft.Graph.Models;

var requestBody = new AppRoleAssignment
{
PrincipalId = Guid.Parse("cde330e5-2150-4c11-9c5b-14bfdc948c79"),
ResourceId = Guid.Parse("8e881353-1735-45af-af21-ee1344582a4d"),
AppRoleId = Guid.Parse("00000000-0000-0000-0000-000000000000"),
};

// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users["{user-id}"].AppRoleAssignments.PostAsync(requestBody);

Исходя из того, что мне нужно создать клиент Graph с использованием OBO, который я нашел в этой статье MS, он выглядит следующим образом:

Код: Выделить всё

var scopes = new[] { "https://graph.microsoft.com/.default" };

// Multi-tenant apps can use "common",
// single-tenant apps must use the tenant ID from the Azure portal
var tenantId = "common";

// Values from app registration
var clientId = "YOUR_CLIENT_ID";
var clientSecret = "YOUR_CLIENT_SECRET";

// using Azure.Identity;
var options = new OnBehalfOfCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
};

// This is the incoming token to exchange using on-behalf-of flow
var oboToken = "JWT_TOKEN_TO_EXCHANGE";

var onBehalfOfCredential = new OnBehalfOfCredential(
tenantId, clientId, clientSecret, oboToken, options);

var graphClient = new GraphServiceClient(onBehalfOfCredential, scopes);

Итак, в моем коде веб-API мне нужно получить PrincipalId пользователя, ResourceId веб-API (где Были созданы роли приложения) и AppRoleId, чтобы иметь возможность отправить запрос.
Я раньше не использовал Graph API поэтому я хотел проверить, правильный ли это способ сделать это, чтобы токен доступа для пользователя обновлялся/возвращался с новой ролью, добавленной в утверждение ролей, которое будет использоваться для успешного попадания в конечные точки, требующие указанную роль, когда пользователь делает к нему запрос.
Это выглядит правильно и/или я что-то упускаю? Я считаю, что мне, возможно, потребуется добавить еще одну область API Graph во второй фрагмент кода, но любые рекомендации будут полезны при навигации по этому интересному миру MS Graph.

Подробнее здесь: https://stackoverflow.com/questions/786 ... -graph-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»