oauth2.0 Blazor OIDC刷新令牌

6ioyuze2  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(83)

我有一个使用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应用程序如何使用刷新令牌?
谢谢你,崔维斯

cbwuti44

cbwuti441#

我不认为将oidc令牌存储在会话或本地存储中是推荐的做法,因为它会使您的应用程序暴露于安全漏洞。
我现在倾向于使用“Backend for Frontend”(BFF)模式来使用Blazor进行身份验证。这比简单地将令牌存储在本地/会话存储中要复杂得多。但是,它将令牌管理从客户端推到服务器,我相信它更安全。
下面是该方法的一个很好的参考。https://damienbod.com/2021/03/08/securing-blazor-web-assembly-using-cookies/
我并不是说这很容易,因为这并不容易。但是,我认为这比将令牌存储在客户端中更好,这就像将前门钥匙放在你家的门垫下一样。
(Note我知道我还没有回答你关于刷新令牌的问题,但我认为你需要先解决令牌的安全存储问题,然后再担心刷新令牌)

ui7jx7zq

ui7jx7zq2#

我认为在你的情况下,因为你是在会话存储中存储数据,一旦浏览器关闭,数据就会丢失。sessionStorage的范围是浏览器的标签。如果用户重新加载标签,状态将持续。如果用户关闭标签或浏览器,状态将丢失。如果用户打开多个浏览器标签,每个标签都有自己独立的数据版本。
如果使用localStorage,则如果用户重新加载页面或关闭并重新打开浏览器,则状态将持续。
但是,存储是不可配置的,并且不受支持,如此处所述https://github.com/dotnet/aspnetcore/issues/20574

相关问题