CAS 7.3.2中OAuth服务属性过滤配置问题求助
问题现象
将CAS从5.3升级至7.3.2后,CAS V2、V3和OIDC认证可正常针对不同服务配置返回属性,但OAuth服务无法通过attributeReleasePolicy过滤属性,始终返回LDAP配置principal-attribute-list中定义的所有字段。使用OAuthRegisteredService时,除带Groovy脚本的ReturnMappedAttributeReleasePolicy外,其余属性释放策略均不生效。
关键问题排查与解决步骤
1. 修复服务注册配置的语法错误
你提供的多个attributeReleasePolicy配置存在语法缺陷,这是导致CAS无法解析策略、默认返回所有属性的核心原因:
- 部分配置缺少闭合的
}(如ReturnStaticAttributeReleasePolicy、ReturnMappedAttributeReleasePolicy) - 部分配置末尾多了逗号(如最后一个
DenyAllAttributeReleasePolicy)
正确的ReturnAllowedAttributeReleasePolicy配置示例:
{ "@class" : "org.apereo.cas.support.oauth.services.OAuthRegisteredService", "clientId": "your-client-id", "clientSecret": "your-client-secret", "serviceId": "^https://your-oauth-client-domain.*", "name": "OAuth Client Service", "id": 10000001, "attributeReleasePolicy" : { "@class" : "org.apereo.cas.services.ReturnAllowedAttributeReleasePolicy", "allowedAttributes" : [ "java.util.ArrayList", [ "cn", "mail", "sn" ] ] } }
2. 确认全局属性释放开关状态
CAS 7.x中需确保服务级属性释放策略的全局开关处于启用状态(默认应为true,可显式配置确认):
cas: services: core: enable-attribute-release-policies: true
3. 检查全局属性释放配置的优先级
你的LDAP配置中设置了attribute-repository.core.default-attributes-to-release,但需注意:
- 服务级
attributeReleasePolicy优先级高于全局默认配置 - 确保未开启全局强制释放所有属性的配置:
cas: authn: attribute-repository: core: release-all-attributes: false
4. 验证配置有效性
使用CAS自带的cas-config-validator工具验证服务注册JSON配置的语法正确性,避免因格式错误导致策略被忽略。
5. 确认依赖完整性
你的依赖已包含cas-server-support-oauth、cas-server-core-services等必要组件,无需额外添加,但需确保所有依赖版本与CAS 7.3.2 bom保持一致,避免版本冲突。
验证
配置修复后,重新启动CAS服务,测试OAuth认证流程,检查返回的属性是否符合attributeReleasePolicy的定义。
内容的提问来源于stack exchange,提问作者sariv

