ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Apereo CAS 嵌入式 Tomcat 容器 HTTP Basic 认证(Basic Authentication)配置指南

Apereo CAS 嵌入式 Tomcat 容器 HTTP Basic 认证(Basic Authentication)配置指南 后端认证鉴权单点登录【免费下载链接】casApereo CAS - Identity Single Sign On for all earthlings and beyond.项目地址https://gitcode.com/gh_mirrors/ca/cas点击查看免费下载本指南聚焦 Apereo CAS 内嵌 Apache Tomcat Servlet 容器提供的HTTP Basic 认证能力如何在 CAS 自身启动的内嵌 Tomcat 上通过cas.server.tomcat.basic-authn.*一组配置属性为指定 URL 模式开启基于容器安全约束Security Constraint与BasicAuthenticator的认证保护。读完本文你将掌握该功能的完整配置方法、各参数的默认值与语义、底层实现原理TomcatLoginConfig/SecurityConstraint/BasicAuthenticator的组装逻辑以及适用场景与限制。一、功能定位为什么要给内嵌 Tomcat 开 Basic 认证Apereo CAS 默认以嵌入式方式运行 Tomcat Servlet 容器对应模块为 webapp/cas-server-webapp-init-tomcatWAR 部署形态见 cas-server-webapp-tomcat。与应用自身org.apereo.cas命名空间下的认证流程例如 CAS 协议、OAuth/OIDC 等不同容器级的 Basic 认证是在Tomcat Context 层直接生效的它作用于 Servlet 容器安全约束所覆盖的 URL 资源它在请求进入 CAS Web 应用之前完成身份校验它依赖 Tomcat 自身的 Realm / 用户存储体系默认配合容器内配置的用户库与 CAS 的用户目录LDAP、JDBC 等是两套独立机制。官方文档 Servlet-Container-Embedded-Tomcat-BasicAuth.md 将全部配置收敛到前缀cas.server.tomcat.basic-authn.之下本指南即围绕该前缀展开。二、配置属性全景cas.server.tomcat.basic-authn.*官方文档通过casproperties注入组件将前缀cas.server.tomcat.basic-authn.对应的全部配置属性渲染进页面其真实定义位于配置模型类 CasEmbeddedApacheTomcatBasicAuthenticationProperties.javasince 5.3.0标注RequiresModule(name cas-server-webapp-tomcat)即该功能依赖 Tomcat 内嵌容器模块。属性清单如下配置属性类型默认值说明cas.server.tomcat.basic-authn.enabledbooleanfalse是否启用嵌入式 Tomcat 的 Basic 认证。该属性带RequiredProperty注解启用与否是功能开关必须显式设置cas.server.tomcat.basic-authn.security-rolesListString[admin]向 CAS Web 应用 Context 注册的安全角色security role集合即 TomcatContext.addSecurityRole(...)注册的角色名cas.server.tomcat.basic-authn.auth-rolesListString[admin]授权角色集合拥有这些角色的用户将被允许访问受保护资源对应安全约束中SecurityConstraint.addAuthRole(...)添加的角色cas.server.tomcat.basic-authn.patternsListString[/*]被安全约束覆盖的 URL 模式web resource collection pattern默认/*即保护整个应用根路径需要特别说明的是配置类中的字段名为securityRoles/authRoles/patternsCAS 的配置绑定遵循 Spring Boot 的宽松绑定relaxed binding规则因此 YAML/Properties 中统一写作 kebab-casesecurity-roles、auth-roles、patterns。它们被挂载在 CasEmbeddedApacheTomcatProperties.java 的basicAuthn嵌套属性上最终经由cas.server.tomcat.basic-authn.*暴露给用户。三、配置示例完整可复制的 YAML在 CAS 的application.yml或application.properties中加入以下配置即可对默认的/*全部路径启用容器级 Basic 认证cas: server: tomcat: basic-authn: enabled: true security-roles: - admin auth-roles: - admin patterns: - /*若只想保护部分管理端点例如/status、/actuator/**可按需收窄patternscas: server: tomcat: basic-authn: enabled: true security-roles: - admin - operator auth-roles: - admin patterns: - /status - /actuator/*要点归纳enabled是总开关不设置或设为false时整个 Basic 认证装配逻辑完全不生效角色默认值均为admin若不显式声明security-roles/auth-roles只有被容器 Realm 授予admin角色的用户才能通过认证patterns默认/*意味着默认情况下整个 CAS Web 应用都会被 Basic 认证保护这在多数部署场景下会影响正常 SSO 登录页的访问因此建议显式声明需要保护的具体路径避免将登录流程整体置于容器级认证之后该前缀与 Servlet-Container-Embedded-Tomcat.md 所描述的其他内嵌容器配置如cas.server.tomcat.http、cas.server.tomcat.ajp、cas.server.tomcat.ssl-valve等同属CasEmbeddedApacheTomcatProperties的嵌套属性可自由组合。四、源码级原理这组属性是如何生效的配置的消费入口是 CasTomcatServletWebServerFactoryCustomizer.java 中的configureBasicAuthn(TomcatServletWebServerFactory tomcat)方法。它属于 Spring Boot 的ServletWebServerFactoryCustomizer在 CAS 内嵌容器启动阶段对TomcatServletWebServerFactory进行定制。核心逻辑如下private void configureBasicAuthn(final TomcatServletWebServerFactory tomcat) { val basic casProperties.getServer().getTomcat().getBasicAuthn(); if (basic.isEnabled()) { tomcat.addContextCustomizers(ctx - { val config new LoginConfig(); config.setAuthMethod(BASIC); ctx.setLoginConfig(config); basic.getSecurityRoles().forEach(ctx::addSecurityRole); basic.getAuthRoles().forEach(r - { val constraint new SecurityConstraint(); constraint.addAuthRole(r); val collection new SecurityCollection(); basic.getPatterns().forEach(collection::addPattern); constraint.addCollection(collection); ctx.addConstraint(constraint); }); }); tomcat.addContextValves(new BasicAuthenticator()); } }逐行拆解其底层机制LoginConfig与认证方法声明为 Context 设置认证方法为BASIC对应 Servlet 规范中的auth-method声明该 Context 使用 HTTP Basic 认证协议Context.addSecurityRole(...)把securityRoles中声明的角色注册为容器可见的安全角色角色本身必须存在于容器 Realm 的用户-角色映射中SecurityConstraintSecurityCollection为authRoles中的每个授权角色创建一个安全约束并将patterns中的 URL 模式加入资源集合——这正是 Servlet 规范中security-constraint/web-resource-collection的编程式等价物BasicAuthenticatorValve通过tomcat.addContextValves(new BasicAuthenticator())将 Tomcat 的org.apache.catalina.authenticator.BasicAuthenticator阀门挂载到 Context 管道上负责实际执行 BASIC 认证挑战返回401并在响应头中携带WWW-Authenticate: Basic以及校验Authorization: Basic ...请求头中的凭据。因此整个功能本质上是把传统web.xml中手写的security-constraint、login-config与BasicAuthenticator阀门用 CAS 配置属性和编程式 API 组合了出来——这与标准 Tomcat 部署的 Basic 认证行为完全一致只是从改web.xml变成了写cas.server.tomcat.basic-authn.*。五、测试证据与验证方式模块测试 CasTomcatServletWebServerFactoryTests.java 通过SpringBootTest加载CasEmbeddedContainerTomcatAutoConfiguration并在properties中显式注入cas.server.tomcat.basic-authn.enabledtrue同组测试还同时启用了ssl-valve.enabledtrue、http-proxy.enabledtrue、ajp.enabledtrue、ext-access-log.enabledtrue等内嵌容器特性用于验证CasTomcatServletWebServerFactoryCustomizer在多种容器配置并存时的组装正确性。这组测试被Tag(ApacheTomcat)标注可通过以下命令单独运行在仓库根目录执行 Gradle wrapper./gradlew :webapp:cas-server-webapp-init-tomcat:test --tests *CasTomcatServletWebServerFactoryTests*部署后的验证方式以curl访问被patterns覆盖的路径未提供凭据时应收到401 Unauthorized且响应头包含WWW-Authenticate: Basic realm...使用curl -u admin:password提供凭据若 Realm 校验通过则正常进入资源若角色不满足authRoles则会收到403 Forbidden约束存在但授权失败。六、适用场景、限制与前置条件适用场景保护 CAS 内嵌 Tomcat 暴露的监控/管理端点如/status、/actuator/**为容器层加上第一道访问门槛在反向代理Nginx 等之后作为额外的纵深防御或在无法部署独立网关的最小化环境中快速启用基础防护。关键限制务必知悉凭据源由容器 Realm 决定BasicAuthenticator只负责挑战-校验流程用户名/密码及角色映射来自 Tomcat 自身配置如内存 Realm、tomcat-users.xml、JDBC Realm 等与 CAS 的用户目录无关。CAS 源码中并未内置任何用户存储到该认证器需要在容器/部署层面准备 Realmenabled为RequiredProperty即功能只有在显式配置enabled: true时才启用默认关闭默认patterns为/*直接启用且不改patterns会让整个 CAS 应用含登录流程都要求 Basic 认证多数场景下会造成 SSO 流程不可用请按需收窄 URL 范围模块依赖该配置类标注RequiresModule(name cas-server-webapp-tomcat)使用前提是部署形态采用内嵌 Tomcat 的 CAScas-server-webapp-tomcat而非 Jettycas-server-webapp-jetty或 Undertow 等其他内嵌容器与 CAS 应用认证相互独立容器 Basic 认证先于 CAS Web 应用执行两者不共享会话Basic 认证通过只代表允许访问该 Context 资源不代表用户已完成 CAS 登录。升级与维护提示该配置自5.3.0起引入并持续沿用字段语义稳定在升级 CAS 版本时应重点确认security-roles、auth-roles、patterns三者的角色名与 URL 模式是否仍然匹配新版容器安全约束的解析规则。更完整的内嵌容器调优项连接器、AJP、SSL Valve、Rewrite Valve、访问日志等可继续查阅 Servlet-Container-Embedded-Tomcat.md 及同目录下的 Servlet-Container.md。赞分享后端认证鉴权单点登录【免费下载链接】casApereo CAS - Identity Single Sign On for all earthlings and beyond.项目地址https://gitcode.com/gh_mirrors/ca/cas点击查看免费下载相关推荐Apereo CAS 基础认证Basic Authentication接入指南配置、源码原理与 curl 实践Apereo CAS 基础认证Basic Authentication接入指南配置、源码原理与 curl 实践 Apereo CAS 的基础认证Basi后端认证鉴权单点登录OpenSEO 贡献者如何用 Alchemy 部署带 Access 门禁的本地预览环境OpenSEO 贡献者如何用 Alchemy 部署带 Access 门禁的本地预览环境 你改完 OpenSEO 的某段代码后想在真实 Cloudflare后端认证鉴权单点登录Apereo CAS 认证失败限流Authentication Throttling配置指南Apereo CAS 认证失败限流Authentication Throttling配置指南 CAS 提供了一套内建的登录失败限流机制用于限制连续失败的登后端认证鉴权单点登录上一篇深度解析Zotero Style重构文献管理体验的模块化增强方案下一篇微信聊天记录如何永久保存WeChatMsg数据主权完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表