【问题标题】:Keycloak returning already-expired tokensKeycloak 返回已经过期的令牌
【发布时间】:2021-02-09 00:15:25
【问题描述】:

我正在尝试使用 keycloak 获取访问令牌,

但我在尝试使用 keycloak 颁发的令牌时收到错误 Token is expired

例如,如果我使用 curl 获取令牌:

curl -u account:___mysecret___ -k
-d "grant_type=password&username=testuser&password=__some__pass"
-H "Content-Type:application/x-www-form-urlencoded" 
http://localhost:8080/auth/realms/testRealm/protocol/openid-connect/token

使用jwt.io解码返回的token,可以看到exp日期是昨天的日期。

如何获得可用的访问令牌?

【问题讨论】:

  • 你的本地主机时间错了吗?
  • @JanGaraj 也许。它在 docker 中运行。但是由于其他原因我不得不重新启动计算机,然后时间就可以了。

标签: jwt single-sign-on keycloak openid access-token


【解决方案1】:

我认为您在 Windows 上使用带有 docker 桌面的 keycloak。

以及您的 hyperV 的本地时间不再与您的主机同步。

如果您在 docker 容器中写了 : date,则日期是错误的。

所以keycloak的tokengenerate过时了

所以重启 hyperV 会重新同步 docker 容器中的本地时间。

更多信息在这里:How to make sure docker's time syncs with that of the host?

【讨论】:

    【解决方案2】:

    检查了“领域设置”的“令牌”选项卡!在那里您可以配置会话超时和令牌有效性。

    如果有设置,请进一步检查“clients”=>“settings”=>“advanced settings”。

    然后请检查您的keycloak主机上配置的时间和时区。

    【讨论】:

    • 不得不重新启动计算机(出于其他原因),之后 keycloak 继续正常工作。
    猜你喜欢
    • 1970-01-01
    • 2019-01-21
    • 2020-11-20
    • 2021-05-27
    • 1970-01-01
    • 2014-06-27
    • 2019-12-11
    • 2018-10-14
    • 2019-10-21
    相关资源
    最近更新 更多