如何在Apereo CAS中实现普通表单、二维码、无密码登录同时生效
Apereo CAS 三种登录方式共存配置方案
核心问题原因
CAS 默认开启无密码认证后会自动触发无密码认证流,跳过其他认证方式的加载,这是你配置后仅显示无密码登录、修改模板后其他方式无法使用的核心原因,只调整模板前端展示不足以解决问题,需要同步调整后端认证流配置。
具体配置步骤
- 第一步:禁用无密码认证自动触发
在cas.properties配置文件中添加如下配置,关闭无密码认证的默认跳转逻辑:cas.authn.passwordless.trigger-auto=false - 第二步:明确注册所有启用的认证处理器
在配置中指定你需要同时生效的三个认证处理器,按你实际的处理器名称调整即可,常规配置如下:cas.authn.core.authentication-handlers=usernamePasswordAuthenticationHandler,qrCodeAuthenticationHandler,passwordlessAuthenticationHandler
同时确认三个认证方式的总开关均为开启状态:
# 普通账号密码登录开启 cas.authn.accept.enabled=true # 二维码认证开启 cas.authn.qr.enabled=true # 无密码认证开启 cas.authn.passwordless.enabled=true
- 第三步:调整登录模板的提交参数
你之前修改模板后其他登录方式无法使用,是因为提交请求未携带对应认证流的标识参数,需要给三个登录选项的提交请求分别加上对应参数:- 普通表单提交时携带参数
authn_method=username_password - 二维码认证触发时携带参数
authn_method=qr_code - 无密码登录提交时携带参数
authn_method=passwordless
同时要确保所有POST提交的登录请求都携带CAS默认要求的_csrf参数,避免跨域校验拦截导致请求失败。
- 普通表单提交时携带参数
- 第四步:开启多认证处理器校验策略
添加如下配置确保CAS允许多个认证流并行生效:cas.authn.policy.required-authentication-handlers-enabled=true
验证操作
所有配置修改完成后重启CAS服务,清除浏览器缓存后重新访问登录页,即可看到三个登录选项,选择对应方式即可正常触发对应认证流。
内容的提问来源于stack exchange,提问作者Bardia
相关产品推荐
相关产品推荐

