首页 » 网站建设 » php接入cas技巧_基于springsecurityjwt与casserver53对接

php接入cas技巧_基于springsecurityjwt与casserver53对接

访客 2024-12-11 0

扫一扫用手机浏览

文章目录 [+]

本文首先来看项目A采取 Cas server 5.3 版本搭建的认证做事器,哀求我们系统接入,并供应 cas-client3.2 版本 jar 包。

一、需求

客户给了一个简要的文档,即认证集成手册,旨在辅导运用系统实现统一身份认证和单点登录集成。

php接入cas技巧_基于springsecurityjwt与casserver53对接

集成手册解释

各运用将认证接口的客户端开拓包集成在各运用之中,更换自身原有独立的身份认证功能,通过身份管理平台实现身份认证和单点登录过程。
该接口目前涵盖的类型包括JAVA、 PHP和 .NET(2.0+),适宜于不同措辞和平台的运用程序。

php接入cas技巧_基于springsecurityjwt与casserver53对接
(图片来自网络侵删)

CAS做事集成

认证接口事情过程

代理认证配置完后,均需至统一身份管理平台授权访问。

先登录身份认证管理平台,在认证管理的认证运用模板,添加需代理认证的运用;添加完运用后,需给相应的组或者帐号授权,许可其访问该运用。

JAVA客户端支配

将“java/lib”下的cas-client-core-3.2.1.jar文件拷贝到客户端运用所在做事器中,并将存放这些jar包的路径设置到运用的classpath中。
比如WebContent\WEB-INF\lib中

修正WebContent\WEB-INF\web.xml文件

<context-param>

<param-name>casServerLogoutUrl</param-name>

<param-value> http://XXX/authserver/logout </param-value>

</context-param>

<!--单点退出配置-->

<listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>

</listener>

<filter>

<filter-name>CAS Single Sign Out Filter</filter-name>

<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>CAS Single Sign Out Filter</filter-name>

<url-pattern>/</url-pattern>

</filter-mapping>

<filter>

<filter-name>CAS Authentication Filter</filter-name>

<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>

<init-param>

<param-name>casServerLoginUrl</param-name>

<param-value> http://192.168.1.10/cas/login</param-value>

</init-param>

<init-param>

<param-name>serverName</param-name>

<param-value> http://192.168.1.10:8080/index</param-value>

</init-param>

<init-param>

<param-name>renew</param-name>

<param-value>false</param-value>

</init-param>

<init-param>

<param-name>gateway</param-name>

<param-value>false</param-value>

</init-param>

</filter>

<filter>

<filter-name>CAS Validation Filter</filter-name>

<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>

<init-param>

<param-name>casServerUrlPrefix</param-name>

<param-value> http://192.168.1.10/cas /</param-value>

</init-param>

<init-param>

<param-name>serverName</param-name>

<param-value> http://192.168.1.10:8080/index </param-value>

</init-param>

</filter>

<filter>

<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>

<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>

</filter>

<filter>

<filter-name>CAS Assertion Thread Local Filter</filter-name>

<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>CAS Authentication Filter</filter-name>

<!--修正为须要授权访问的目录-->

<url-pattern>/protect/</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>CAS Validation Filter</filter-name>

<url-pattern>/</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>

<url-pattern>/</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>CAS Assertion Thread Local Filter</filter-name>

<url-pattern>/</url-pattern>

</filter-mapping>

二、剖析

我们公司的技能框架体系,是基于 spring security + oauth2 + jwt 的开源框架,公司自己又再大略封装形成了一个框架做事,支持用户登录认证和授权和微做事之间的认证,微做事之间的做事采取 oauth2 的客户端模式 client_credentials。

上面的需求只能辅导我们理解到:

须要与Cas-server做对接,对接的cas-client为3.2.1版本.给了一个spring-mvc时期的配置示例,与springboot不兼容,须要转换为spring-boot的代码配置上面的示例是基于session和cookie作为通信的,而我们体系是jwt体系,不兼容。

通过技能调研,与cas-server做对接,基于spring-security常见的对接方案为:

spring-security-cas某开源的cas-support封装jar包

剖析上面2种方案,实在都是基于spring-security的封装:

自定义了一个Filter, 可以拦截要求自定义一个provider用来处理上面自定义Filter拦截的要求,从而完成与认证做事器的交互,获取用户信息,完成认证过程。

我采取的是spring-security-cas,相对来说代码质量更好,可扩展性强,又是spring团队供应。

在利用spring-security-cas过程中碰着了很多问题:

spring-security-cas是基于spring-security的,必须狠理解spring-security,不然寸步难行。
spring-security-cas供应了一个 CasAuthenticationFilter 过滤器和一个 CasAuthenticationProvider。
公司封装了一个认证和授权的框架,作为jar包供应出来,里面定义了各种WebSecurityConfigurerAdapter,但是我又改不了。
改不了框架的WebSecurityConfigurerAdapter,那就只能自定义一个WebSecurityConfigurerAdapter,自定义之后的Adapter里面有各种配置,与原来的WebSecurityConfigurerAdapter又是什么关系,实行顺序是什么样的。

都须要去搞清楚,不然,怎么调试都不通。

其余一个关键,网上虽然有各种示例和事理讲解,总觉得没有我想要的答案。

下面分享我办理问题的全体过程:

弄清楚spring-security的总入口在哪里从入口出发,各种Filter是如何事情的弄清楚只有一个WebSecurityConfigurerAdapter的时候,spring-security的事情过程是怎么样的如果定义了多个WebSecurityConfigurerAdapter,他们的顺序又是怎么样的

请连续关注

标签:

相关文章

php随机json技巧_随机数生成算法科普

提要0. 背景先容1. 什么是随机数天生算法2. 最大略的随机数天生算法3. 接下来的研究零 - 背景先容比如吧, 最近口试就创造...

网站建设 2024-12-13 阅读0 评论0

南通php司理技巧_南通近期招聘信息汇总

招聘岗位聘无纺 客户经理多少名岗位职责:根据内部风险要求,实行各项银行信贷产品推广操持,完成各项指标;及时反馈客户建议。岗位哀求:...

网站建设 2024-12-13 阅读0 评论0