Конечная точка вызова защищена с помощью [Authorize] с помощью HttpClient в Blazor wasmC#

Место общения программистов C#
Anonymous
Конечная точка вызова защищена с помощью [Authorize] с помощью HttpClient в Blazor wasm

Сообщение Anonymous »

У меня есть интерфейс Blazor Wasm, где я могу аутентифицировать себя с помощью регистрации приложения в Azure. Я могу успешно войти в систему, и моя личность верна. В другом решении у меня есть серверная часть с защищенной конечной точкой с атрибутом [Authorize].

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

[ApiController]
[Route("/")]
public class DummyController : ControllerBase
{
[HttpPost("foo")]
[Authorize]
public IActionResult Foo()
{
return Ok("Foo");
}
}
В моем program.cs моего серверного интерфейса есть следующие строки:

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

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = "https://login.microsoftonline.com/{TENANT-ID}";
//options.Audience = "http://localhost:8092/";
});
Я пытаюсь вызвать это конечную точку /foo из моего HttpClient во внешнем интерфейсе:

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

// program.cs
builder.Services.AddMsalAuthentication(options =>
{
builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
options.ProviderOptions.LoginMode = "redirect";
options.ProviderOptions.DefaultAccessTokenScopes
.Add("https://graph.microsoft.com/User.Read");
});
И клиент во внешнем интерфейсе, где я пытаюсь вызвать свою конечную точку:

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

public class DummyClient(IAccessTokenProviderAccessor accessTokenProviderAccessor)
{
private readonly IAccessTokenProviderAccessor _accessTokenProviderAccessor = accessTokenProviderAccessor;

public async Task FooAsync()
{
var tokenResult = await _accessTokenProviderAccessor.TokenProvider.RequestAccessToken();

if (tokenResult.TryGetToken(out var token))
{
_httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token.Value);
}

var client = new HttpClient();
var response = await _httpClient.GetAsync("http://localhost/foo");
var text = await response.Content.ReadAsStringAsync();

return text;
}
}
Но я всегда получаю ответ 401, что я упускаю или делаю неправильно?


Подробнее здесь: https://stackoverflow.com/questions/790 ... lazor-wasm

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