【问题标题】:how expired OAuth2 Tokens are detected?如何检测过期的 OAuth2 令牌?
【发布时间】:2018-11-06 07:07:33
【问题描述】:

我是 Spring Boot 的初学者,我设置了 OAuth2 并且所有的工作都与 inMemory () 数据一起工作。 我正在尝试将令牌存储在数据库中,但我希望客户端保留在内存中,因为我将始终为该应用程序使用单个客户端 因此我使用schema.sql 创建了必要的表(这很好但是..)。出于这个原因,我很难理解系统如何知道令牌是否过期? (知道我没有明确定义 JWT 令牌或任何其他特定类型的令牌)

【问题讨论】:

    标签: spring-boot oauth-2.0 spring-security-oauth2


    【解决方案1】:

    此场景中的令牌是 DefaultOAuth2AccessToken 类的一个实例,它具有字段

    过期

    负责处理令牌的到期。这个类的对象被序列化,以便它可以存储在数据库中。反序列化时,将值填充到各个字段中,并调用下面的方法来检查是否过期。

       public boolean isExpired() {
        return this.expiration != null && this.expiration.before(new Date());
    }
    

    类 DefaultTokenServices 有 createAccessToken() 方法来创建令牌。 去看看这些类看看工作。

    【讨论】:

    • 我不明白的是 Spring 是如何知道令牌是否过期(即使在重新启动应用程序后,以确保数据不会存储在内存中)而在我的数据库级别我没有看到任何可以导致推断令牌到期日期的内容
    • 在数据库中,对象以序列化形式存储。您在表格列中看到随机值吗?
    【解决方案2】:

    感谢您的回答 在对文档进行一些研究之后,我现在可以了解令牌是如何验证的。 令牌(DefaultOAuth2AccessToken)作为序列化对象存储在数据库中,它将从数据库中检索以验证到期日期,以及许多其他操作...

    【讨论】:

      猜你喜欢
      • 2019-12-14
      • 2016-02-15
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 2016-06-04
      • 2012-05-23
      • 2021-03-19
      • 2017-12-02
      相关资源
      最近更新 更多