【问题标题】:Storing Access & Refresh tokens from multiple Providers?存储来自多个提供商的访问和刷新令牌?
【发布时间】:2022-02-08 15:57:03
【问题描述】:

假设我允许我的用户连接到 Facebook、Instagram、Pinterest 和 Twitter,这样他们就可以使用他们的 API。所以我得到了所有这些提供者的访问令牌。

根据我的阅读,我现在倾向于将它们存储在一个仅限 http 的 cookie 中。

但是,如果有 4 个访问令牌,这是否意味着所有 4 个访问令牌总是在每次请求时都被发送?

这里有什么安全的方法?还是在这种情况下我根本不将它们存储在客户端上?

【问题讨论】:

    标签: javascript node.js authentication oauth-2.0 access-token


    【解决方案1】:

    这取决于您的解决方案的确切架构。如果您有一个后端,并且您的后端调用这些 API,那么您可以将这些令牌保留在您的后端。它们根本不必保留在前端。如果您的前端需要这些令牌(例如,它直接调用这些 API),那么您必须将令牌保留在那里,并且您的前端应用程序必须能够读取它们(因此它们不能存储在仅 HTTP 中饼干)。

    我很难在浏览器中没有任何令牌。最好将它们保留在后端。

    【讨论】:

    • 非常感谢您的回答,我一直在为此苦苦挣扎。将它们存储在数据库中是否可以,或者我可以使用node-persist 之类的东西(如果您熟悉的话)?另外,我想知道的一件事是,如果我将它们存储在我自己的后端,那么我想我需要自己保护我自己的 API 到那个后端?我只是想知道这是否不会使它更容易受到攻击,因为现在我需要在前端和后端之间进行身份验证?你怎么看?
    • 你可以依赖一个普通的基于 cookie 的会话。这样一来,您就可以使用可靠且经过实战考验的功能来验证和授权访问,而不必太担心您的令牌会因 XSS 攻击而从浏览器中被盗。
    • 非常感谢您的回答,作为一个初学者,我很难理解这些东西是如何工作的。只是为了确保,您的意思是我应该使用基于 cookie 的会话来保护客户端和我自己的服务器之间的 API 吗?所以我会通过 cookie 基础会话识别用户,在后端我只需将令牌保存在某个数据库中的某个地方,可能是加密的,然后让该用户访问令牌并进行 API 调用?
    • 没错。我认为您不必以加密格式保存令牌。它会增加您的解决方案的复杂性,但没有太大的实际价值。
    猜你喜欢
    • 2021-07-16
    • 2021-09-13
    • 2021-07-08
    • 2020-01-26
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 2019-10-25
    相关资源
    最近更新 更多