5 authentication authorization oauth-2.0 jwt openid-connect
据我所知,隐式流的最终结果是访问令牌,它允许客户端(在我的情况下是 JS SPA)向资源服务器(API)进行身份验证。
访问令牌通常仅在大约 1 小时内有效,然后就会过期 - 使其变得无用。
那么我的 JS 应用程序应该做什么?将用户重定向回身份验证服务器是不现实的,因为用户将不得不每 1 小时重新输入一次他们的凭据!
我也知道隐式流不支持刷新令牌,所以我也不能使用它们。
有没有办法保留用户的登录信息?Facebook 之类的东西如何让您无限期地登录?
只是为了澄清一下,您是在询问OAuth 2.0 RFC中详细介绍的隐式流程,而不是 OpenID Connect,后者更多地处理用户身份验证?
通过你所做的隐式流程定期调用授权端点来获取新令牌,但如果用户保持登录其身份提供者的状态,则不应提示他们重新提交其凭据,并且令牌将作为哈希片段返回在重定向 uri 中,无需用户交互。
您可以使用 AJAX 调用在反向通道上获取令牌,以便您的 SPA 应用程序用户体验不会因需要获取新令牌而受到影响。
为了解决您在问题中强调的要点:
访问令牌通常仅有效约 1 小时,然后就会过期 - 使其变得无用。
正确的!
那么用户必须每 1 小时重新输入一次凭据!
不必要。
如果用户保持登录到身份提供商(例如 facebook、google),则用户和该提供商之间将存在一个浏览器 cookie。这实际上意味着身份提供商不需要用户重新输入凭据。授权服务器应该能够向您返回一个令牌,而无需交互。
有没有办法保持用户的登录状态?
您无法通过 SPA 控制它。这完全取决于用户是否保持登录到身份提供商。如果他们保持登录 Facebook、Google(或您的应用程序使用的任何 IDP),那么您应该能够以非交互方式获取令牌。
本文很好地解释了如何实现隐式流程。
| 归档时间: |
|
| 查看次数: |
2366 次 |
| 最近记录: |