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

Jenkins集成Keycloak插件遇无限循环及令牌无受众问题求助

问题分析与解决方案

核心问题定位

日志中的org.keycloak.common.VerificationException: No audience in the token明确指出:Keycloak颁发的JWT令牌中缺少audience(aud)字段,而你的Jenkins配置里开启了verify-token-audience: true,导致令牌验证失败,进而引发登录无限循环(验证失败→重定向登录→再次验证失败)。

排查思路

  • 确认Keycloak客户端是否配置了生成aud字段的规则
  • 解析实际获取的JWT令牌,检查是否包含aud字段(可使用jwt.io工具解析)
  • 核对Jenkins配置中的resource值与Keycloak客户端的Client ID是否完全一致(大小写敏感)
  • 检查Keycloak领域的Token全局设置,是否覆盖了客户端的audience配置

解决方案

方案1:配置Keycloak客户端生成aud字段

  1. 登录Keycloak控制台,进入你的Prod领域,找到Jenkins客户端
  2. 在Settings标签页:
    • 确认Access Type设置为confidential(与你配置中的credentials.secret对应)
    • 滚动到Advanced Settings,开启Include Client Audience选项(不同Keycloak版本位置可能略有差异)
  3. 在Client Scopes标签页:
    • 找到audience系统内置客户端范围,将其添加到该客户端的Assigned Default Client Scopes列表中
  4. (可选)如果上述步骤无效,添加自定义Audience映射器:
    • 切换到Mappers标签页,点击Create
    • 填写参数:
      Mapper Type: Audience
      Name: Jenkins-Audience
      Included Client Audience: Jenkins(你的客户端ID)
      Add to access token: 勾选
      
    • 保存后重新测试登录

方案2:核对Jenkins配置一致性

确保导入的Keycloak配置JSON中:

  • resource的值与Keycloak客户端的Client ID完全一致(大小写、拼写必须完全匹配)
  • 若使用Keycloak新版本,确认auth-server-url的路径是否正确(新版本Keycloak移除了/auth后缀,若你的Keycloak版本是17+,需改为https://login.****.org/)

临时排查方案(不推荐生产环境)

若需快速验证问题根源,可临时将Jenkins配置中的verify-token-audience改为false,重新启动Jenkins后测试登录。若能正常登录,说明问题确实出在audience字段缺失上,再按方案1修复后改回true。

内容的提问来源于stack exchange,提问作者Delaram Hamraz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:36:02