OPENID Connect:如何处理访问令牌

时间:2018-03-20 17:08:11

标签: session openid openid-connect

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

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

  2. 对于客户端发出的每个后续请求,我是否应该每次都反省访问令牌? 每次查看令牌都是一个重要的开销。我看到的另一种方法是创建一个会话,并在维护会话时保持用户的身份验证。但是我认为这很难看,因为:

    • 我失去了无国籍状态'
    • 如果用户从身份提供商处注销,我不知道会话仍在我的最后维护
  3. 如果我的理解在我写的要点上是正确的,那么请告诉我。这些问题的正确解决方案是什么。

1 个答案:

答案 0 :(得分:1)

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

安全的地方。这只能由发出令牌的客户端访问。

当您传输访问令牌时,您必须使用TLS。这是RFC6749 - 10.3. Access Tokens

的强制要求
  

访问令牌凭证必须仅使用TLS传输

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

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

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

问:如果用户从身份提供商处注销,我不知道会话仍在我的最后维护

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

中的规格
相关问题