我想通过HealthChecksUI创建HealthChecks门户,但是获得授权的访问受到限制。
另外,我使用 Blazor 完成授权对话框的创建并接收访问令牌。
所以我配置了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授权标头中的 bearer令牌进行授权。
接下来让我们检查授权工作:
来自 POSTMAN 的GET请求(带有有效的承载令牌)成功通过“ / 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”页面,因此出现401 Unauthorized错误。
如何通过accessToken
HTTP标头中的NavigateTo
方法传递接收到的承载令牌(Authorization
),以完成对“ /门户”页面的授权访问?甚至有可能吗?