根据文档,虽然隐式流程 - 我们无法获取刷新令牌。
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/”。
第一次登录用户是可以的。但遇到以下情况怎么办:
错误:无效的请求
error_description:指定的“redirect_uri”对此无效 客户端应用程序。 error_uri:https://documentation.openiddict.com/errors/ID2043
你能告诉我解决这个问题的正确方法吗?
微软,建议我们使用prompt=none和cookie授权来更新token过期的情况。
遗憾的是,这种方法不再适用于现代浏览器,因为大多数浏览器默认禁止第三方 cookie,这会阻止 iframe 在使用静默身份验证请求(即
prompt=none
请求)时发送身份验证 cookie。
我的建议是使用代码流和刷新令牌。 OpenIddict 默认实现 token 刷新轮换,降低安全风险。