Я хочу создать портал HealthChecks через HealthChecksUI , но с ограниченным доступом с авторизацией.
Также я использую Blazor для выполнения sh создания диалога авторизации и получения токена доступа.
Итак, я настраиваю HealthChecksUI:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//...
app.UseEndpoints(endpointsBuilder =>
{
//...
endpointsBuilder.MapHealthChecksUI(setup =>
{
setup.UIPath = "/portal";
setup.ApiPath = "/portal/api";
setup.WebhookPath = "/portal/webhooks";
setup.ResourcesPath = "/portal/resources";
}).RequireAuthorization(); // This means access to '/portal' route will be limited by authorization.
//...
}
//...
}
Я использую маркер переноса в HTTP-заголовок авторизации для авторизации при выполнении любого запроса.
Далее давайте проверим работу по авторизации:
GET-запрос от POSTMAN с успешным токеном-носителем для маршрута '/ portal', успешно пройденного. Также, если я меняю токен, я получаю 401 Несанкционированную ошибку. Похоже, система авторизации работает правильно.
Следующим шагом будет использование диалога авторизации для получения и перенаправления токена на страницу портала.
Код ниже - это просто простая функция авторизации с использованием страницы .razor
private async Task SubmitAsync()
{
var (authorizationSuccessful, accessToken) = await authorizationService.AuthorizeAsync(authorizationData).ConfigureAwait(false);
if (authorizationSuccessful)
{
navigationManager.NavigateTo("/portal", true);
}
else
{
throw new UnauthorizedAccessException("Incorrect login or password");
}
}
Итак, проблема в том, что:
При прохождении авторизации (authorizationSuccessful
равно true
) и выполнении навигации я попадаю на страницу / portal без каких-либо данных авторизации, поэтому я get 401 Unauthorized error.
Вопрос в следующем:
Как передать полученный токен-носитель (accessToken
) через NavigateTo
метод в Authorization
HTTP-заголовок в правомерное завершение sh доступ к странице '/ portal'? Это вообще возможно?