Я бы хотел программно назначать роль пользователю после его успешной регистрации, поскольку некоторым конечным точкам веб-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);
Код: Выделить всё
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);
Я раньше не использовал Graph API поэтому я хотел проверить, правильный ли это способ сделать это, чтобы токен доступа для пользователя обновлялся/возвращался с новой ролью, добавленной в утверждение ролей, которое будет использоваться для успешного попадания в конечные точки, требующие указанную роль, когда пользователь делает к нему запрос.
Это выглядит правильно и/или я что-то упускаю? Я считаю, что мне, возможно, придется добавить еще одну область Graph API во второй фрагмент кода, но любые рекомендации будут полезны при навигации по этому интересному миру MS Graph.
Подробнее здесь: https://stackoverflow.com/questions/786 ... -graph-api