You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JWT有效性验证机制及Keycloak Token跨站登录验证逻辑咨询

JWT相关问题解答

1. JWT Token的有效性验证方式

JWT的有效性验证围绕完整性、时效性、合法性三个核心维度展开,具体步骤如下:

  • 签名校验:JWT由头部(Header)、载荷(Payload)、签名(Signature)三部分组成。验证方会用和签发方相同的加密算法(如HS256、RS256),结合对应密钥(对称加密用共享密钥,非对称加密用签发方公钥),对头部和载荷重新计算签名,与Token自带的签名比对。若不一致,说明Token内容被篡改,直接判定无效。
  • 有效期校验:载荷中的exp(过期时间)和nbf(生效时间)是关键时间标识。验证方会对比当前服务器时间,确保当前时间在nbf之后、exp之前,超出此范围的Token直接失效。
  • 受众与发行方校验:检查载荷里的aud(受众)是否匹配当前服务的客户端ID,确保Token是发给自身的;同时验证iss(发行方)是否为预先信任的授权服务器,拒绝来自未知来源的Token。
  • 自定义规则校验:根据业务需求,还可校验sub(用户唯一标识)是否在系统中存在、azp(授权方)是否为合法客户端、roles(角色)是否具备访问当前资源的权限等。

2. Keycloak生成Token的无效判断、凭据信息说明及登录流程

2.1 如何判断Token无效

网站对Keycloak生成的Token做无效判断,除通用JWT校验规则外,还会结合Keycloak的特性:

  • 签名验证失败:用Keycloak提供的公钥重新计算签名,与Token签名不匹配,说明Token被篡改或使用了错误密钥。
  • 时间范围异常:exp已过期或nbf未到生效时间,直接判定无效。
  • 身份不匹配:iss不是信任的Keycloak实例域名,aud不是当前网站在Keycloak中注册的客户端ID,这类Token属于非法目标凭证。
  • Token被吊销:若Keycloak开启令牌撤销功能,网站可通过Keycloak的Introspect接口查询Token状态,用户主动登出、权限被收回或Token被管理员撤销时,都会被判定为无效。
  • 格式错误:Token不是标准的三段式Base64编码结构,直接视为无效。

2.2 为什么Token里看不到凭据信息

JWT的核心作用是传递授权信息,而非存储身份凭据。用户的用户名、密码这类敏感凭据,仅在登录阶段提交给Keycloak做验证,验证通过后Keycloak就会丢弃这些信息,不会写入JWT载荷。载荷里只会包含用户ID、角色、权限范围这类非敏感的身份标识和授权信息,所以看不到凭据内容。

2.3 基于Keycloak的JWT登录流程

  1. 触发登录跳转:用户访问需要登录的网站,网站检测到用户未登录,将其重定向到Keycloak的统一登录页面。
  2. 用户身份认证:用户在Keycloak页面输入用户名和密码,Keycloak验证凭据有效性,确认用户身份合法。
  3. 获取授权码与Token:验证通过后,Keycloak将用户重定向回网站并附带授权码;网站拿着授权码、自身客户端ID和密钥,向Keycloak的Token接口请求获取Access Token(JWT格式)和Refresh Token。
  4. Token验证与资源访问:网站先验证Access Token的有效性(签名、有效期、受众等),验证通过后,用户后续每次请求资源时,在请求头携带Authorization: Bearer <Access Token>,网站校验Token无误后返回对应资源。
  5. Token刷新:当Access Token过期时,网站用Refresh Token向Keycloak请求新的Access Token,无需用户再次输入用户名密码,实现无感续期。

内容的提问来源于stack exchange,提问作者SK WAS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 16:32:43