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

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

Сообщение Anonymous »

У меня есть приложение React и веб-API .NET 8 с собственными регистрациями приложений в клиенте MS Entra external ID.
Я бы хотел программно назначать роль пользователю после его успешной регистрации, поскольку некоторым конечным точкам веб-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, и из этой статьи MS он выглядит так:

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

var scopes = new[] { "User.Read" };

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

// Value from app registration
var clientId = "YOUR_CLIENT_ID";

// using Azure.Identity;
var options = new DeviceCodeCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
ClientId = clientId,
TenantId = tenantId,
// Callback function that receives the user prompt
// Prompt contains the generated device code that user must
// enter during the auth process in the browser
DeviceCodeCallback = (code, cancellation) =>
{
Console.WriteLine(code.Message);
return Task.FromResult(0);
},
};

// https://learn.microsoft.com/dotnet/api/azure.identity.devicecodecredential
var deviceCodeCredential = new DeviceCodeCredential(options);

var graphClient = new GraphServiceClient(deviceCodeCredential, scopes);

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

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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