3

我正在尝试通过使用 oauth 授权端点使用 prompt=none 在 iframe 中集成访问令牌的静默刷新。我似乎无法弄清楚如何做到这一点,或者它是否受支持,并且在此处的文档中看不到任何信息:

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

我尝试在 URL 中使用 prompt=none 但它似乎没有做任何事情。

我希望 prompt=none 根据 OpenID Connect Core 1.0 工作

感谢你的帮助!

4

1 回答 1

4

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

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

以下是它的工作原理:

用户未登录

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

用户仍然登录

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

此流程在 AJAX 中运行良好。它不能很好地工作,iframe因为没有办法iframe将消息返回到您的应用程序,即用户需要再次登录或者他们仍然登录并且现在有一个新的访问令牌。

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

于 2019-04-26T03:07:32.903 回答