在上一节中我们使用了CAS的提供的JDBC 方式的登录认证,基本上能够满足我们多种需求的认证。...自定义策略主要通过现实更改CAS配置,通过AuthenticationHandler在CAS中设计和注册自定义身份验证策略,拦截数据源达到目的。...主要分为下面三个步骤: 设计自己的认证处理数据的程序 注册认证拦截器到CAS的认证引擎中 更改认证配置到CAS中 首先我们还是添加需要的依赖库: cas-server-core-authentication-api ${cas.version}通过拦截传入的Credential,获取用户名和密码,然后再自定义返回给客户端的用户信息。这里便可以通过代码方式自定义返回给客户端多个不同属性信息。
CAS 5.3.1系列之自定义Shiro认证策略(四) CAS官方文档是介绍基于配置实现shiro认证的,可以参考官方文档,不过我们也可以通过自定义认证策略的方式实现jdbc认证,pom先加入相关jar...cas-server-core-authentication-api ${cas.version}cas-server-core-configuration-api ${cas.version}apereo.cas.authentication.principal.PrincipalFactory; import org.apereo.cas.services.ServicesManager...; import org.apereo.cas.configuration.CasConfigurationProperties; import org.apereo.cas.services.ServicesManager
cas-server-core-authentication-api ${cas.version} org.apereo.cas cas-server-core-webflow-api...--里面以${#themes.code('blog.js.file')}形式获取的参数是从主题同名文件blog.properties中获取的:properties中获取的--> 中,这样应用程序不在web层也能够获取到当前登录信息 * @return */ @Bean public FilterRegistrationBean...从基础模式可以看出, TGC 是 CAS Server 通过 SSL 方式发送给终端用户,因此,要截取 TGC 难度非常大,从而确保 CAS 的安全性。所以CAS的安全性是依赖于SSL的。
该漏洞存在于Apereo CAS 4.1.7版本及之前的所有4.1.x版本中,核心触发条件有两个:默认密钥未修改:Apereo CAS 4.1.x 版本在出厂时内置了一组默认的加密 / 解密密钥(如changeit...(二)漏洞原理Apereo CAS 4.1.x 版本的登录流程中,会将用户的登录状态、请求上下文等信息通过 Java 序列化机制转换为二进制数据,并用默认密钥加密后存储在execution参数或会话 Cookie...由于默认密钥未被修改且反序列化过程缺乏安全校验,攻击者可利用以下逻辑发起攻击:攻击者先通过公开渠道获取 Apereo CAS 4.1.x 的默认密钥,使用 Commons Collections 等存在漏洞的第三方库...(Apereo CAS 依赖该类库),构造包含 “恶意命令执行逻辑” 的序列化数据(例如将反弹 Shell 命令嵌入到序列化对象中);攻击者在登录页面发起登录请求,通过抓包工具拦截 HTTP 请求,将构造好的恶意序列化数据替换到请求中的...,攻击者即可执行预先设定的任意命令(如反弹 Shell、获取服务器权限等)。
前面我们整合客户端的时候,需要在cas服务端注册,使用的是json文件的方式,直接通过配置文件完成配置,但是也存在一定的不方便性。...,会在mysql中自动生成以下表格 增加http接口,操作数据库添加或删除service package com.thtf.cas.controller; import org.apereo.cas.services.RegexRegisteredService...; import org.apereo.cas.services.RegisteredService; import org.apereo.cas.services.ReturnAllAttributeReleasePolicy...以下Swagger端点可用于分析和测试API: 描述 网址 Swagger API规范 http://localhost/cas/v2/api-docs Swagger UI http://localhost.../cas/swagger-ui.html 启动 访问:http://localhost:8443/cas/swagger-ui.html 测试 此时我们就可以通过接口完成service的添加,删除等操作
SSO统一身份认证——在原有页面中增加验证码(十九) 背景 单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。...org.apereo.cas:cas-server-core-webflow-api" 2、创建一个定制的Credential,在该定制版中将增加验证码的验证字段 package com.sso.credential...// 从flow中获取到前端视图的ViewState final ViewState state = (ViewState)flow.getState(CasWebflowConstants.STATE_ID_VIEW_LOGIN_FORM...; import org.apereo.cas.web.flow.CasWebflowConfigurer; import org.apereo.cas.web.flow.CasWebflowExecutionPlan...; import org.apereo.cas.authentication.Credential; import org.apereo.cas.authentication.MessageDescriptor
SSO统一身份认证——CAS Server6.3.x自定义验证逻辑尝试(六) 背景 单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。...其实我们的使用的包中该接口是在其他包中的,而我们默认加载过来的存在一定的缺失性,需要再次引入几个包。...implementation "org.apereo.cas:cas-server-webapp-init:${casServerVersion}" implementation "org.apereo.cas...:cas-server-core-authentication-api:${casServerVersion}" implementation "org.apereo.cas:cas-server-core-configuration-api...:${casServerVersion}" implementation "org.apereo.cas:cas-server-core-api-configuration-model:${casServerVersion
Sa-Token 还有许多其他功能和扩展性,在处理系统的权限验证时具有简单而优雅的 API 设计。...apereo/cas[2] Stars: 10.3k License: Apache-2.0 cas CAS 是面向 Web 的企业多语言单点登录解决方案,旨在成为满足身份验证和授权需求的综合平台...,如 LDAP、CAS 等 buzzfeed/sso[5] Stars: 3.0k License: MIT sso 是 BuzzFeed 开发的身份验证和授权系统,旨在为员工使用的许多内部 Web...Broker 类则负责向 Server 发送请求并获取已认证用户信息。...相关链接 [1] dromara/Sa-Token: https://github.com/dromara/Sa-Token [2] apereo/cas: https://github.com/apereo
Apereo 的漏洞披露称: 通过发送到 REST API 端点的 POST 请求,CAS 容易受到反射跨站点脚本攻击。可以在 URL 上注入有效负载:/cas/v1/tickets/。...恶意脚本可以通过票证 ID 或用户名等参数提交给 CAS。这导致 CAS 拒绝请求并产生一个响应,其中易受攻击的参数的值被回显,从而导致其执行。...Apereo CAS 拒绝请求并在 HTTP 响应中回显票证 ID 或用户名,而没有清理或转义,而标头“ Content-Type ”是“ text/html ”。...这意味着你在你的网站上制作了一个恶意的 HTML 文件,通过电子邮件、消息等向受害者发送链接来引诱受害者访问这个文件,然后 HTML 文件中的漏洞利用代码会自动发送 POST 请求以触发 XSS 漏洞....image.png 如果您正在管理 Apereo CAS 服务器,您应该检查服务器的版本并更新到......不是版本 6.3.7.1 和 6.4.2,而是版本6.3.7.4 和 6.4.4.2以缓解这种
多系统登录问题 同域名 当访问同域名下的页面时,Cookie 和单系统登录时一样,会正常携带,后台服务即可直接获取到对应的 SessionID 值,后台为单服务还是多服务无差别。...既然不能跨域获取,那 CAS 如何做到共享呢?它通过跳转中间域名的方式来实现登录。 页面访问流程如下图: ? 以下为连环画形式,期望能让读者更好的理解: ? ? ? ? ? ? ? ? ? ? ?...CAS 规定 ST 只能保留一定的时间,之后 CAS 服务会让它失效,而且,CAS 协议规定 ST 只能使用一次,无论 ST 验证是否成功,CAS 服务都会清除服务端缓存中的该 ST,从而规避同一个 ST...扩展阅读 其他相关的内容,也可以进行简单了解,如:单点登录退出 SLO(https://apereo.github.io/cas/5.2.x/installation/Logout-Single-Signout.html...//apereo.github.io/cas/5.2.x/protocol/CAS-Protocol.html)
cookie):授权的票据证明,有 CAS server 通过 SSL 方式发送给客户端; KDC(key Distribution Center):秘钥发放中心; ST(service ticket...3.在login_URL中会获取到用户的cookie,检验用户是否已经在其他相关使用sso的系统登录成功。...四、部署 Cas: Github地址:https://apereo.github.io/cas/ Overlay版:https://github.com/apereo/cas-overlay-template...https://apereo.github.io/cas/4.2.x/protocol/CAS-Protocol-Specification.html Cas服务器,在配置文件中添加 # vim /usr...启用后,通过omniauth自动创建的用户也将连接到ldap条目中。 注意:在ldap和omniauth提供程序中,auto_link_ldap_user要求uid用户的ID相同。
多系统登录问题 同域名 当访问同域名下的页面时,Cookie 和单系统登录时一样,会正常携带,后台服务即可直接获取到对应的 SessionID 值,后台为单服务还是多服务无差别。...既然不能跨域获取,那 CAS 如何做到共享呢?它通过跳转中间域名的方式来实现登录。 页面访问流程如下图: ? 以下为连环画形式,期望能让读者更好的理解: ? ? ? ? ? ? ? ? ? ? ?...CAS 规定 ST 只能保留一定的时间,之后 CAS 服务会让它失效,而且,CAS 协议规定 ST 只能使用一次,无论 ST 验证是否成功,CAS 服务都会清除服务端缓存中的该 ST,从而规避同一个 ST...扩展阅读 其他相关的内容,也可以进行简单了解,如:单点登录退出 SLO(https://apereo.github.io/cas/5.2.x/installation/Logout-Single-Signout.html...//apereo.github.io/cas/5.2.x/protocol/CAS-Protocol.html) 看完两件事 如果你觉得这篇内容对你挺有启发,我想邀请你帮我两件小事 1.点个「在看」,让更多人也能看到这篇内容
CAS是一个单点登录框架,开始是由耶鲁大学的一个组织开发,后来归到apereo去管。 同时CAS也是开源,遵循着apache 2.0协议,代码目前是在github上管理。...应用场景 分布式多系统用户集中管理 用户权限集中管理 多因素认证(如微信pc端登录手机确认) 如公司有多个系统,分别OA系统、CRM系统、财务管理系统、设备管理系统等,总不能访问每个系统都要登录一遍吧...https://www.apereo.org/projects/cas 4.Architecture(架构) 5.System Components (系统组件) CAS服务器和CAS客户端组成CAS...根据用户的请求,通过使用TGT作为标记的浏览器重定向向服务发出服务票据(ST)。 ST随后通过反向信道通信在CAS服务器上进行验证。 CAS Protocol文档中详细描述了这些交互。...CAS Clients(CAS客户端)术语“CAS客户”在其通用中有两个不同的含义。 CAS客户端是可以通过支持的协议与服务器进行通信的任何CAS支持的应用程序。
具体参考: https://ldap.com/ CAS CAS 是由耶鲁大学实验室 2002 年出的一个开源的统一认证服务中的标准协议,也是很多企业内部系统登录所使用的标准协议,如阿里巴巴等。...同时客户端可以自定义登录流程,通过服务端提供的接口进行认证。总体流程如图^1: 使用方也就是 Apereo CAS,此外有少数的语言也按此协议开发了不同的服务端,不过应用甚少。...简介可以参考维基百科: 安全断言标记语言 Apereo CAS 官网:https://apereo.github.io/cas/6.4.x/index.html 这是老牌的 SSO 系统,Java 语言开发...还是刚才说的,内部系统很多都在使用其二次开发或扩展的 CAS,如阿里巴巴。 部署支持 Docker、原生 war。...接入 CAS 需要其支持客户端语言,如 PHP-CAS 等。
2、单点登录 单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统。...然后,需要先了解CAS单点登录,按照CAS的规范进行对接,cas的资料可以参考我之前的:CAS单点登录系列博客 CAS官网资料: CAS Github链接 Apereo CAS官方网站 CAS体系结构分为...Protocol 、 CAS 、 OAuth 、 OpenID 、 RESTful API 、 SAML1.1 、 SAML2.0 等 下面给出一张来自CAS官方的图片 ?...,session对象都获取不到,一直抛异常,redis序列化失败,ClassNotFoundException?...ok,本博客进行比较浅显的分析,先做好记录,日后有时间再看看源码实现 5、附录资料 CAS官网资料: CAS Github链接 Apereo CAS官方网站
SSO统一身份认证——CAS Server6.3.x连接MySQL或Postgre进行认证(二) 背景 单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。...快速软件包openjdk11+tomcat9+CASServer.tar 正文 在SSO统一身份认证——CAS Server安装启动(一)时我们讲了如何在本地安装启动CAS Server,同时使用默认账号密码完成了登录行为...1、在本地MySQL中创建我们需要使用的数据库与相关表结构。...implementation "org.apereo.cas:cas-server-webapp-init:${casServerVersion}" implementation "org.apereo.cas...:cas-server-support-jdbc:${casServerVersion}" implementation "org.apereo.cas:cas-server-support-jdbc-drivers
-5.3.14/WEB-INF/classes/services/Apereo-10000002.json): { "@class": "org.apereo.cas.services.RegexRegisteredService...1.3 修改 hosts 另外,我们还需要修改电脑 hosts 文件,因为前面关于 CAS Server,关于 SSL 证书的配置都涉及到域名,所以后面的访问我们将通过域名的形式访问,hosts 文件中添加如下两条记录...自定义认证逻辑的两种方式(高级玩法)),当时就说,想要自定义认证逻辑,如短信登录等,都可以通过扩展 AuthenticationProvider 来实现,这里的 CAS 登录当然也不例外,这里虽然设置了一个...用户虽然在 CAS Server 上登录,但是,登录成功之后,CAS Client 还是要获取用户的基本信息、角色等,以便做进一步的权限控制,所以,这里的 loadUserByUsername 方法中的参数...,实际上就是你从 CAS Server 上登录成功后获取到的用户名,拿着这个用户名,去数据库中查询用户的相关信心并返回,方便 CAS Client 在后续的鉴权中做进一步的使用,这里我为了方便,就没有去数据库中查询了
官方文档:https://apereo.github.io/cas/5.1.x/installation/User-Interface-Customization.html 主题?...官方文档明确说明,登录页渲染文件为casLoginView.html,那意味我们在主题具体目录下新增改文件并且按照cas要求写那就可以了,最终目的还是获取到对应的配置文件,渲染对应主题的登录页。...{ "@class": "org.apereo.cas.services.RegexRegisteredService", "serviceId": "^(http)://localhost.*...通过配置文件接入服务指定主题 { "@class": "org.apereo.cas.services.RegexRegisteredService", "serviceId": "^(http...=[默认主题名称] 我们这里就采用第三种方式,在配置文件中添加默认主题配置: # 默认主题 cas.theme.defaultThemeName=login 新建登录文件 明码规定文件名为casLoginView.html
好了,这里先放架构图: 现在来讲解这个架构图: 首先搭建好CAS服务端后,服务端会自定义一个数据库和用户表,用户表中存放的是用户名和密码,通过访问子系统的URL地址,如果CAS系统判定你没有登录,就会将...URL重定向到CAS的服务端登录界面,用户通过输入用户数据库的用户名和密码来进行登录,待登录成功后,CAS服务端会给CAS客户端(子系统)发送登录的用户名,CAS客户端接到用户名后,会从CAS客户端的用户表中寻找对应用户名的...userid,并通过该userid获取到该名用户在CAS客户端的相关权限。...,然后各个子系统的管理员就可以通过子系统的角色权限设置,给该用户配置相关的角色权限了。...下载Overlay 通过阅读官网文档(https://apereo.github.io/cas/5.1.x/planning/Getting-Started.html)了解到官方建议我们: 通过使用一个名叫
来获取 Session。...不过这要求应用系统的域名需建立在一个共同的主域名之下,如 tieba.baidu.com 和 map.baidu.com,它们都建立在 baidu.com 这个主域名之下,那么它们就可以通过这种方式来实现单点登录...这里顺便介绍两款认证中心的开源实现: Apereo CAS 是一个企业级单点登录系统,其中 CAS 的意思是”Central Authentication Service“。...它最初是耶鲁大学实验室的项目,后来转让给了 JASIG 组织,项目更名为 JASIG CAS,后来该组织并入了Apereo 基金会,项目也随之更名为 Apereo CAS。...前端拿到 Session ID (或 Token )后,除了将它写入自己的 LocalStorage 中之外,还可以通过特殊手段将它写入多个其他域下的 LocalStorage 中。