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

CAS 6.6.8配置OIDC对接测试应用遭授权拒绝问题求助

CAS 6.6.8 OIDC授权被拒问题排查

背景

初次接触CAS 6.6.8,熟悉Okta、Auth0等OIDC平台,但不了解CAS配置。当前CAS已集成AD登录,点击Node.js测试应用的登录按钮后,跳转至CAS的OIDC授权URL,但直接进入“Authorization Denied”页面,未触发AD认证流程,需排查解决。


相关配置信息

CAS服务器OIDC模块配置

# Server
server.port=443

# SSL
server.ssl.enabled=true
server.ssl.key-store=file:{path}
server.ssl.key-store-password=xxx
server.ssl.key-password=xxx

# CAS
cas.server.name=https://URL:443
cas.server.prefix=${cas.server.name}/cas
cas.logout.followServiceRedirects=true
cas.authn.accept.enabled=false

# Active Directory
cas.authn.ldap[0].type=AUTHENTICATED
cas.authn.ldap[0].ldapUrl=ldap://localhost:389
cas.authn.ldap[0].useStartTls=false
cas.authn.ldap[0].baseDn=DC=AAA,DC=BBB
cas.authn.ldap[0].search-filter=(sAMAccountName={user})
cas.authn.ldap[0].subtreeSearch=true
cas.authn.ldap[0].bindDn=USER
cas.authn.ldap[0].bindCredential=XXX

# OIDC settings
cas.authn.oidc.core.issuer=https://URL/cas/oidc
cas.authn.oidc.core.skew=5
cas.authn.oidc.jwks.file-system.jwks-file=file:C:\Program Files\Tomcat 9.0\etc\cas\config\keystore.jwks

# Encryption/Signing keys
cas.tgc.crypto.encryption.key=SN7Vpa8oHvXfh2hDZp8ANxZGRkF1DvKbYLTy_Vip2dI
cas.tgc.crypto.signing.key=KwbtZl2y5sidXFMShjVm4PiGwjVQ0Fq-ZBp0A_HUK6IOnoS2h0E5cSfp7vy8uioqX04yKIBXcU0kUm6DRuPCZQ
cas.webflow.crypto.signing.key=MltIqyj_vGFgZKFfw8vmoqYIYYu_KEU20AyZaAIDZl_Xjhl0ZGpPNe4h4N7-8p1_pNi-s97TQKb1-INp9VEwEA
cas.webflow.crypto.encryption.key=3Mh_pdDFLPCMgacDL6z8SQ

注册服务配置(/etc/config/services)

{
  "@class": "org.apereo.cas.services.OidcRegisteredService",
  "serviceId": "https://localhost:3000/callback", // 我的应用回调URL
  "name": "OIDC",
  "id": 1,
  "clientId": "41ff9715-bd3e-473c-9888-e2d5a1364c2a",
  "clientSecret": "SECRET",
  "bypassApprovalPrompt": true,
  "generateRefreshToken": true,
  "evaluationOrder": 10000
}

Node.js测试应用配置

{
  "domain": "URL/cas/oidc",
  "clientId": "41ff9715-bd3e-473c-9888-e2d5a1364c2a",
}

跳转的授权URL

https://URL/cas/oidc/authorize?client_id=41ff9715-bd3e-473c-9888-e2d5a1364c2a&acr=http%3A%2F%2Fschemas.openid.net%2Fpape%2Fpolicies%2F2007%2F06%2Fmulti-factor&scope=openid%20profile%20email%20read%3Aall&response_type=code&response_mode=query&state=dGEwS21Ddm52WUNXc254c2ptRmNzQjBOZGNTSGlPZzZ1R1AxVldOTl9lMA%3D%3D&nonce=RUIzY1hEbWJmWDZJYjNWOWh3QVJZcjBBdVNDOGt0RVdjYVl6WEZ1R0tXYQ%3D%3D&redirect_uri=http%3A%2F%2Flocalhost%3A3000&code_challenge=2Mln96FLN8s0qylEMY9yuC7ucbKioF9cGMIYG5B4q8s&code_challenge_method=S256&auth0Client=eyJuYW1lIjoiYXV0aDAtc3BhLWpzIiwidmVyc2lvbiI6IjEuMTkuNCJ9

排查与解决方案

1. 回调URL不匹配

注册服务中配置的serviceId是https://localhost:3000/callback,但授权请求里的redirect_uri是http://localhost:3000,两者完全不匹配。CAS会严格校验回调URL,不匹配直接拒绝授权。

  • 修正:将注册服务的serviceId改为http://localhost:3000,或者调整测试应用的redirect_uri为https://localhost:3000/callback,确保两者一致。

2. ACR要求未满足

授权请求中携带了acr=http://schemas.openid.net/pape/policies/2007/06/multi-factor,但当前CAS仅配置了AD单因素认证,没有启用多因素认证模块。CAS无法满足该ACR要求,直接拒绝授权。

  • 修正:
    • 从测试应用的授权请求中移除acr参数;
    • 或在CAS中启用多因素认证模块,并配置对应ACR的认证策略。

3. 自定义权限范围未配置

授权请求中的scope包含read:all,但注册服务未显式允许该自定义范围。CAS默认仅支持标准OIDC范围(openid、profile、email等),自定义范围需手动配置。

  • 修正:在注册服务配置中添加scopes字段:
"scopes": ["openid", "profile", "email", "read:all"]

4. HTTP/HTTPS协议不一致

注册服务的serviceId使用HTTPS,但测试应用的redirect_uri使用HTTP,CAS可能因协议不一致拒绝请求。

  • 修正:若测试应用为本地开发用HTTP,将注册服务的serviceId改为http://localhost:3000;或给测试应用配置HTTPS证书,统一协议。

5. 查看CAS日志定位细节

检查CAS服务器的日志文件(通常路径为logs/cas.log),查找“Authorization Denied”相关的详细错误信息,可精准定位具体校验失败环节。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:45:33