【问题标题】:Not able to get access token with Blazor WASM with AWS Cognito because X-Frame-Options is set to DENY无法通过 Blazor WASM 和 AWS Cognito 获取访问令牌,因为 X-Frame-Options 设置为 DENY
【发布时间】:2020-10-22 10:21:14
【问题描述】:

我使用 Blazor WebWebAssembly 作为前端,使用 AWS Cognito 作为 IDP。

我可以成功登录 AWS Cognito,但无法使用以下代码获取访问令牌,因为“X-Frame-Options”指令设置为“DENY”错误。

 private async Task WriteTokenToConsole()
    {
        var tokenResult = await TokenProvider.RequestAccessToken();
        if (tokenResult.TryGetToken(out var token))
        {
            System.Diagnostics.Debug.WriteLine(token.Value);
        }
    }

然而,如果我将 IDP 切换到 Identity Server 4,我可以获得访问令牌没有问题。

根据这条评论 https://github.com/dotnet/aspnetcore/issues/22651#issuecomment-640565340 ,是因为 Cognito 不符合标准吗?

有没有办法解决这个问题?

谢谢

【问题讨论】:

  • 除了实现你的AuthenticationStateProvider 没有
  • 它存储在 Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings 键中浏览器的会话存储中。如果您使用 JSRuntime.InvokeAsync("sessionStorage.getItem", key) 您可以访问原始 JSON,然后对其进行反序列化(如果您编写与其结构匹配的自定义对象)。

标签: asp.net-core amazon-cognito blazor blazor-client-side


【解决方案1】:

我可以通过以下代码访问它:How do I get the id_token in Blazor WebAssembly after authenticating with OpenId (Cognito)?

我已经将其抽象为 JSRuntime 的扩展,以便更容易在我的代码中重用。但这对我来说似乎很好用。

【讨论】:

  • 感谢 Jeff Bacon,它现在工作正常。它不起作用,因为我试图学习它并从头开始做所有事情,我能够登录,但没有令牌存储在会话存储中。我仍然不知道为什么。但是,我只是尝试从带有个人用户帐户的 Blazor WASM 模板开始,我所做的只是更改 appsettings.json,一旦登录,所有令牌(ID、访问和刷新令牌)都在会话存储中。
猜你喜欢
  • 2017-07-29
  • 1970-01-01
  • 2016-02-25
  • 2021-10-03
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
  • 2022-08-14
  • 2016-08-25
相关资源
最近更新 更多