使用FusionAuth及其提供的oauth端点,是否可以使用提示符= none在SPA中进行静默刷新?

时间:2019-04-26 01:54:25

标签: openid-connect fusionauth

我试图通过使用oauth authorize端点使用hint = none来在iframe中集成访问令牌的无提示刷新。我似乎无法弄清楚如何执行此操作,甚至无法支持它,并且在此处的文档中看不到任何信息:

https://fusionauth.io/docs/v1/tech/oauth/overview

我尝试在URL中使用提示符= none,但似乎没有任何作用。

我希望根据OpenID Connect Core 1.0,prompt = none无法正常工作

感谢您的所有帮助!

1 个答案:

答案 0 :(得分:1)

FusionAuth当前不支持授权代码授予的prompt=none选项。这是我们计划在即将发布的版本中添加的内容。

但是,存在其他人已使用的解决方法。您可以向FusionAuth的授权端点发出AJAX请求,然后检查结果以确定用户是否需要再次登录或刷新其访问令牌。

这是它的工作方式:

用户未登录

  1. 您的应用发出AJAX请求,请求/ oauth2 / authorize端点
  2. 如果用户不再登录,FusionAuth将以200和HTML响应,其中包含我们的登录表单。
  3. 您的应用程序可以检查响应,并查看用户是否需要登录并带他们进入FusionAuth的界面重新登录。

用户仍然登录

  1. 您的应用发出AJAX请求,请求/ oauth2 / authorize端点
  2. FusionAuth将使用授权码以302响应您的redirect_uri
  3. 您的后端将完成授权码授予并调用FusionAuth令牌终结点
  4. 这将返回访问令牌(可能还有刷新令牌)
  5. 您的后端应返回200加JSON正文或表明用户仍在登录的内容
  6. AJAX响应将发送到您的应用程序,它可以解析该响应并查看用户是否仍在登录
  7. 您的应用程序现在将具有新的访问令牌

此流程在AJAX中效果很好。它在iframe中无法正常运行,因为iframe无法通过一种方式将您需要再次登录或仍然登录的消息发送回您的应用程序现在有了一个新的访问令牌。

如果您想在我们的授权端点上打开prompt=none支持的GitHub问题,可以在这里进行:https://github.com/FusionAuth/fusionauth-issues