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

CAS 6.6.8 JDBC属性仓库未用Principal查询:Bug还是配置错误?

问题判定:配置错误,非Bug

问题根源

当用户通过邮箱登录时,LDAP认证成功后会返回uid(用户名)作为CAS的Principal,但你的JDBC属性仓库默认使用**登录时输入的Credential(即邮箱)**执行查询,而数据库中用户属性是以用户名存储的,自然查不到结果。用户名登录正常是因为此时Credential和Principal的uid值一致,查询能匹配到数据。

修复配置

需要修改JDBC属性仓库的配置,强制其使用Principal的ID(也就是LDAP返回的uid)执行查询,而非登录输入的Credential:

  1. 开启使用PrincipalId的配置:
cas.authn.attribute-repository.jdbc[0].usePrincipalId=true
  1. 确保SQL语句的占位符对应数据库的用户名字段(USER_ID),可调整为更明确的形式:
cas.authn.attribute-repository.jdbc[0].sql=select a, b, c from user_table where USER_ID = ?

若保留原{0}占位符,只要开启usePrincipalId=true,CAS就会用Principal的uid替换占位符,匹配数据库的USER_ID字段。

验证逻辑

开启usePrincipalId=true后,无论用户用用户名还是邮箱登录,JDBC属性仓库都会使用LDAP返回的uid(用户名)作为查询条件,与数据库中存储的USER_ID匹配,即可正常获取属性。

内容的提问来源于stack exchange,提问作者Micho Rizo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:12:03