Blazor OIDC 刷新令牌

问题描述 投票:0回答:2

我有一个使用 OIDC 身份验证的 Blazor WASM 应用程序。我的 OIDC 正在运行。

            builder.Services.AddOidcAuthentication(options =>
            {
                options.ProviderOptions.ResponseType = "code";
                options.ProviderOptions.DefaultScopes.Add("offline_access");
                options.ProviderOptions.Authority = "Oauth URL";
                options.ProviderOptions.ClientId = "client ID";
            });

我定义了offline_access 范围,以便生成刷新令牌。

用户登录后,来自令牌端点的响应将存储在会话存储中。只要用户不退出应用程序,这种方法就非常有效。但是,一旦用户关闭浏览器然后再次打开浏览器,即使刷新令牌尚未过期,他们也必须重新登录网站。

使用 OIDC 的 Blazor WASM 应用程序如何使用刷新令牌?

谢谢你, 特拉维斯

c# oauth-2.0 blazor openid-connect
2个回答
0
投票

我认为在你的情况下,由于你将数据存储在会话存储中,一旦浏览器关闭,数据就会丢失。

sessionStorage
的范围仅限于浏览器的选项卡。如果用户重新加载选项卡,该状态仍然存在。如果用户关闭选项卡或浏览器,状态就会丢失。如果用户打开多个浏览器选项卡,则每个选项卡都有自己独立的数据版本。

如果使用

localStorage
,在这种情况下,如果用户重新加载页面或关闭并重新打开浏览器,状态将持续存在。

但是,存储不可配置,并且不支持,如此处所述https://github.com/dotnet/aspnetcore/issues/20574


0
投票

我不认为建议将 oidc 令牌存储在会话或本地存储中,因为这会使您的应用程序面临安全漏洞。

我现在倾向于使用“前端的后端”(BFF) 模式通过 Blazor 进行身份验证。它比简单地将令牌存储在本地/会话存储中要复杂得多。然而,它将令牌管理从客户端推送到服务器,我相信它更安全。

以下是该方法的一个很好的参考。 https://damienbod.com/2021/03/08/secure-blazor-web- assembly-using-cookies/

我并不是说这很容易,因为事实并非如此。但是,我认为这比将令牌存储在客户端中更好,这就像将前门钥匙留在你家的门垫下一样。

© www.soinside.com 2019 - 2024. All rights reserved.