使用隐式流刷新令牌。 OpenIdDict

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

根据文档,虽然隐式流程 - 我们无法获取刷新令牌。

Microsoft,建议我们使用prompt=none和cookie授权在token过期时更新token:

隐式授予不提供刷新令牌。 id_tokens 和 access_tokens 将在短时间内过期,因此您的应用程序 必须准备好定期刷新这些令牌。刷新 无论哪种类型的令牌,您都可以执行相同的隐藏 iframe 请求 从上面使用prompt=none参数来控制身份 平台的行为。如果您想收到新的 id_token,请务必 在response_type和scope=openid中使用id_token,以及nonce 参数。

这意味着当我的前端应用程序由于令牌已过期而从资源服务器收到 401 错误时,它必须转到后台的 /authorize 端点并指定重定向 uri,该 uri 将用于在令牌过期时将应用程序重定向回来。重新发行。

当我们使用OpenIdDict时,我们必须在数据库中指定允许重定向的uri,这个usi必须是常量,例如“https://www.MyApp.com/”。

第一次登录用户是可以的。但遇到以下情况怎么办:

  1. 用户点击了链接,例如“https://www.MyApp.com/file/{fileId}/download”(uri 具有 {fileId} - 即可变部分)。
  2. 资源服务器返回401错误,因为token已过期。
  3. FrontEnt应用程序,使用prompt=none将后台模式下的用户重定向到身份: (https://www.myAuthServer.com/connect/authorize?client_id=console&response_type=id_token%20token&scope=openid&**redirect_uri=https://www.MyApp.com/file/{fileId}/download**&nonce= qwertyui&**提示=无**) 所以它使用:
  • 提示=无
  • RedirectUri =“https://www.MyApp.com/file/{fileId}/download”
  1. 我希望我的授权服务器将重新发出令牌并使用新令牌将用户重定向到指定页面,但我不会这样做,而是会出现错误(invalid_request),因为在数据库 uri 中“https://www. MyApp.com/file{fileId}/download”不存在允许重定向 uri 的金额。

错误:无效的请求
error_description:指定的“redirect_uri”对此无效 客户端应用程序。 error_uri:https://documentation.openiddict.com/errors/ID2043

你能告诉我解决这个问题的正确方法吗?

authentication authorization openiddict implicit-flow
1个回答
0
投票

微软,建议我们使用prompt=none和cookie授权来更新token过期的情况。

遗憾的是,这种方法不再适用于现代浏览器,因为大多数浏览器默认禁止第三方 cookie,这会阻止 iframe 在使用静默身份验证请求(即

prompt=none
请求)时发送身份验证 cookie。

我的建议是使用代码流和刷新令牌。 OpenIddict 默认实现 token 刷新轮换,降低安全风险。

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