【问题标题】:REST Service with third party OAuth2REST 服务与第三方 OAuth2
【发布时间】:2013-02-06 17:51:28
【问题描述】:

我正在为它构建一个 REST 服务器和一个客户端。现在我需要嵌入一些第三方 oauth2 身份验证。现在我将用户引导到服务器,让他对服务进行身份验证,然后我重定向到客户端,有点像这样:

客户端:未验证 -> 服务器 -> 重定向到第三方 -> 重定向到服务器 -> 重定向到应用程序。

然后我在客户端存储一个cookie来识别用户(cookie是使用withCredentials和CORS发送的)。

我现在的问题是令牌过期后我应该怎么做重新认证?由于客户端和服务器仅通过 json 进行通信,我将不得不再次启动完整的身份验证过程,因此用户将丢失应用程序中的所有状态。有没有人有关于如何解决这个问题的建议?在客户端进行身份验证并将访问令牌存储在服务器上是否更好?

【问题讨论】:

    标签: rest authentication oauth client-server


    【解决方案1】:

    您所做的一切都是获取 OAuth access_token 的正确方法。而且您的 access_token 是临时的,因此可能会过期。

    我认为你可以做到以下任何一个:

    1. 检查授权服务器(用于获取令牌)是否提供使用您的 access_token 获取更长持续时间令牌的选项。 OAuth 2 规范中也建议这样做。

    2. 尝试在不使用会话的情况下存储用户的状态。

    【讨论】:

    • 对,所以我想没有更好的解决方案。获得更长的令牌并不能真正消除问题,但会降低重新认证过程的频率。存储状态当然是可能的(因为一切都已经是客户端),但也是一个难题。我正在考虑可能使用 window.open() 进行重新身份验证流程,但这也不是最佳的。 iframe 怎么样?
    • 存储状态并不难;您可以在您的应用程序中存储用户的状态信息。我没有尝试过 iframe,但听起来值得一试。
    • 这取决于我们在谈论什么样的状态。我的意思是应用程序的当前状态,直到用户最后一次点击。如果应用程序足够复杂,这绝对不是一个小问题。
    猜你喜欢
    • 2018-06-12
    • 2019-01-02
    • 2015-03-14
    • 2016-01-04
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    相关资源
    最近更新 更多