OPenID 连接 :如何处理访问令牌



我对从令牌端点收到的访问令牌的正确用法有几个问题。

  1. 我应该在哪里存储令牌?理想情况下,我想将其存储在 cookie 中,以便我可以进行无状态会话,这将有助于我进行扩展。但是,将访问令牌保留在cookie中会是一个安全漏洞吗?

  2. 对于客户端发出的每个后续请求,我是否应该每次都自检访问令牌?每次内省令牌看起来都是一笔巨大的开销。我看到的替代方法是创建一个会话,只要会话保持,就保持用户的身份验证。但是我认为这很丑陋,因为:

    • 我失去了"无国籍">
    • 如果用户从身份提供程序注销,我就不知道了,因为会话仍在我这边维护

请让我知道我对我所写的观点的理解是否正确,以及这两个问题的正确解决方案是什么。

问:我应该在哪里存储令牌?

安全的地方。!只能由向其颁发令牌的客户端访问。

传输访问令牌时,必须始终使用 TLS。这是第 RFC6749 - 10.3 规定的。 访问令牌

访问令牌凭据只能使用 TLS 传输

问:对于客户端发出的每个后续请求,我是否应该每次都自检访问令牌?

取决于您的应用。如果无法维护会话,则可以使用临时缓存。例如,这可以在端点之前的 Java 过滤器中实现。如果缓存不保存请求附带的访问令牌的有效性详细信息,则应使用内省来验证它。

但请注意缓存。实现在很大程度上取决于您的应用程序。此外,您可能会面临失效问题。应了解使缓存条目无效的访问令牌生存期。

问:如果用户从身份提供商注销,我不会知道,因为会话仍在我这端维护

Openid conenct 定义会话管理规范,该规范为您提供了从 OpenID 提供程序识别最终用户会话信息的选项。但是要使用这些,OP 应该支持规范实现。从这里检查规格

最新更新