【问题标题】:What is the difference between using refresh token and Silent Authentication for SPA?SPA 中使用刷新令牌和静默身份验证有什么区别?
【发布时间】:2019-06-09 12:15:51
【问题描述】:

据我了解,您不得为 SPA 颁发刷新令牌。但是有一些选项可以获取新的访问令牌,例如静默身份验证。

为简单起见,您向授权服务器 (AS) 提供刷新令牌并获取新的访问令牌。通过静默身份验证,您可以将当前访问令牌传递给 AS 上的某个端点,如果有效,您将获得一个新的访问令牌。

所以请纠正我,因为我不明白为什么静默身份验证是更安全的方法。

【问题讨论】:

    标签: authentication oauth oauth-2.0 authorization


    【解决方案1】:

    通过静默身份验证,您将当前访问令牌传递给 AS 上的某个端点,如果有效,您将获得一个新的访问令牌。

    这是不正确的。

    静默认证流程如下所示:

    身份验证服务器 (AS) 和客户端 (SPA)

    • SPA 重定向用户以使用 AS 登录。
    • AS 登录用户并使用可用于访问 API 的访问令牌重定向回 SPA
    • SPA 调用 API 直到它得到 401。(或使用其他一些机制来计算获取新访问令牌的时间)
    • SPA 对 AS 执行静默 GET authorize 端点试图获取新的访问令牌。它不是 需要提供旧的过期访问令牌。
    • IF AND ONLY 用户还有一个 与 AS 的有效会话(可能是某种身份验证 cookie)然后 AS 将 使用有效的访问令牌响应(如果 AS 认为请求是 有效)。

    好的article解释静默身份验证

    关于为什么更喜欢 auth cookie 和 refresh token - question 澄清了这一点。

    【讨论】:

    • @alex-buny 是的,如果您不使用刷新令牌,则需要使用 cookie。并且对于身份验证没有任何“沉默”。用户必须在此过程中的某个时间点输入他们的凭据。只是,如果他们基于 cookie 的登录没有过期,他们可以随时获得新的访问令牌,而无需进行新的交互。如链接所示,您实际上是在谈论OIDC Implicit Flow。会话的生命周期由为您提供 cookie 的登录服务器控制。
    • 这里与隐式流程相比的不同之处在于,通过静默身份验证,您将使用授权代码流程。在一种用户友好度较低的方法中,如果您需要一个新的访问令牌,您将被重定向到 AS,然后直接返回授权码授予响应。当您的客户收到该信息时,它将执行令牌交换。现在,为了解决这个 UX 问题,您必须做一些诡计和非标准的事情,例如在 iframe 中加载 AS 服务器身份验证端点并使用 HTML 5 消息传递 API 将授权代码发送到客户端。
    • @alex-buyny 如果用户仍然与 AS 有有效会话,AS 如何生成新的访问令牌,是否使用存储在 AS 会话中的 refresh_token?
    猜你喜欢
    • 2020-04-10
    • 2017-11-08
    • 1970-01-01
    • 2018-04-12
    • 2019-03-25
    • 2020-02-16
    • 2016-04-22
    • 2020-07-07
    • 2017-07-26
    相关资源
    最近更新 更多