Конечная точка вызова защищена с помощью [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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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