小编Jef*_*con的帖子

使用 OpenId (Cognito) 进行身份验证后,如何在 Blazor WebAssembly 中获取 id_token?

我有一个 .Net Core 3.1 WebApi 后端。

我有一个 Blazor WebAssembly 前端。

我尝试在前端(有效)登录到 AWS Cognito(设置为 OpenId 提供商),然后在每个请求上将不记名令牌 (JWT) 传递到我的后端 API,以便后端 API 可以使用以下方式访问 AWS 资源:临时凭证 (CognitoAWSCredentials)。

我能够将每个请求的承载令牌从 Blazor 前端传递到后端,但是我能找到在 Blazor 中访问的唯一令牌是访问令牌。我需要 ID 令牌才能允许后端代表我的用户生成凭据。

在我的 Blazor 代码中,我已成功注册了一个自定义 AuthorizationMessageHandler,当访问我的 API 时,它会在每个 HttpClient 的 SendAsync 上调用:

protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
    HttpRequestHeaders headers = request?.Headers;
    AuthenticationHeaderValue authHeader = headers?.Authorization;
    if (headers is object && authHeader is null)
    {
        AccessTokenResult result = await TokenProvider.RequestAccessToken();
        if (result.TryGetToken(out AccessToken token))
        {
            authHeader = new AuthenticationHeaderValue("Bearer", …
Run Code Online (Sandbox Code Playgroud)

access-token jwt openid-connect blazor blazor-webassembly

6
推荐指数
1
解决办法
3191
查看次数