Я написал этот code - этот API должен возвращать список информации о пользователе моего приложения Azure AD (имеет делегированное разрешение - User.ReadBasic.All
). Я сделал настройки для
в файле appsettings.json
. Но я получаю ошибку "401 Unauthorized", даже если я отправил запрос с токеном из Postman.
Я прикрепляю изображение - Вот как я добавил токен в заголовок запроса
Я также получаю правильный токен. Но когда я отправляю запрос get, я получаю 401 Unauthorized. Вместо этого я хочу информацию о пользователе.
Что я делаю не так?
"TenantId": "","ClientId": "" & "ClientSecret": ""
namespace WebApplication4.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class UsersController : ControllerBase
{
private readonly ITokenAcquisition _tokenAcquisition;
public UsersController(ITokenAcquisition tokenAcquisition)
{
_tokenAcquisition = tokenAcquisition;
}
[HttpGet]
public async Task<IActionResult> GetUsers()
{
try
{
// Acquire the access token for Microsoft Graph
var token = await _tokenAcquisition.GetAccessTokenForUserAsync(new[] { "User.ReadBasic.All", "User.Read" });
// Create the GraphServiceClient with an authentication provider
var graphClient = new GraphServiceClient(new AuthProvider(token));
var usersRequestBuilder = graphClient.Users;
var users = await usersRequestBuilder
.GetAsync(requestConfiguration: request =>
{
request.QueryParameters.Select = new[] { "displayName", "userType", "mail" };
});
return Ok(users);
}
catch (Exception ex)
{
return StatusCode(StatusCodes.Status500InternalServerError, "An error occurred while fetching users.");
}
}
private class AuthProvider : IAuthenticationProvider
{
private readonly string _token;
public AuthProvider(string token)
{
_token = token;
}
public async Task AuthenticateRequestAsync(RequestInformation request, Dictionary<string, object>? additionalAuthenticationContext = null, CancellationToken cancellationToken = default)
{
// Set the Authorization header
request.Headers.Add("Authorization", $"Bearer {_token}");
await Task.CompletedTask;
}
}
}
}
Панкратий
Вопрос задан2 мая 2024 г.