2024年4月28日
shiro、cas、pac4j 实现单点登陆 0.0782020.06.11 18:02:54字数 38阅读 768 前言 1 上一篇文章介绍了 cas 环境搭建过程本文介绍下cas和shiro集成代码实现及数据流转过程简介 先看下实现的效果 1 访问 http://localhost:8086/demo1转发到认证中心 1 再次访问 http://localhost:8086/demo1 直接会跳转……
阅读全文
2024年4月28日
package com.carl.wolf.permission.config; import io.buji.pac4j.filter.CallbackFilter; import io.buji.pac4j.filter.LogoutFilter; import io.buji.pac4j.filter.SecurityFilter; import io.buji.pac4j.realm.Pac4jRealm; import io.buji.pac4j.subject.Pac4jSubjectFactory; import org.apache.shiro.mgt.DefaultSecurityManager; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.mgt.SubjectFactory; import org.apache.shiro.realm.Realm; import org.apache.shiro.spring.web.ShiroFilterFactoryBean; import org.apache.shiro.spring.web.config.AbstractShiroWebFilterConfiguration; import org.apache.shiro.spring.web.config.DefaultShiroFilterChainDefinition; import org.apache.shiro.spring.web.config.ShiroFilterChainDefinition; import org.pac4j.cas.client.CasClient; import org.pac4j.cas.client.rest.CasRestFormClient; import org.pac4j.cas.config.CasConfiguration; import org.pac4j.cas.config.CasProtocol; import org.pac4j.core.client.Clients; import org.pac4j.core.config.Config; import org.pac4j.http.client.direct.ParameterClient; import org.pac4j.jwt.config.encryption.SecretEncryptionConfiguration; import org.pac4j.jwt.config.signature.SecretSignatureConfiguration; import org.pac4j.jwt.credentials.authenticator.JwtAuthenticator; import org.pac4j.jwt.profile.JwtGenerator; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.servlet.Filter; import java.util.HashMap; import java.util.Map; /** * 对shiro的安全配置,是对cas的登录策略进行配置 * * @author Carl * @date 2017/9/16 * @since 1.0.0 */ @Configuration public class ShiroConfiguration extends AbstractShiroWebFilterConfiguration { <br> @Value``(``"#{ @environment['cas.prefixUrl'] ?: null }"``) private String prefixUrl; @Value``(``"#{ @environment['cas.loginUrl'] ?: null }"``) private String casLoginUrl; @Value``(``"#{ @environment['cas.callbackUrl'] ?: null }"``) private String callbackUrl; @Value``(``"${jwt.salt}"``) private String salt; @Bean public Realm……
阅读全文
2024年4月28日
从Shiro-cas切换pac4j 开发 1060 切换原因 在shiro-1.3.x以后的版本中,shiro-cas包里面的所有类都被标识为deprecated,详细: https://github.com/apache/shiro/pull/33。 个人认为不继续维护shiro-cas而切换到……
阅读全文
2024年4月28日
原博文 2020-02-13 10:42 − … 0 3484 2019-12-24 08:00 − 1.什么是会话session : 用户和程序直接的链接,程序可以根据session识别到哪个用户,和javaweb中的session类似 2. 什么是会话管理器SessionManager : 会话管理器管理所有subject的所有操作,是shiro的核心组件,&hel……
阅读全文
2024年4月28日
前景提要 springboot+cas+shiro+pac4j实现单点登录,但是登出有问题,服务端退出了,客户端还是登录状态! 0 [待解决问题] 之前没在shiroConfig里加public FilterRegistrationBean singleSignOutFilter() ;可以实现单点登录,登出有问题,家里这个方法后,启动报错: java.lang.IllegalArgumentException: casServerUrlPrefix cannot be null. at org.jasig.cas.client.util.CommonUtils.assertNotNull(CommonUtils.java:87) at org.jasig.cas.client.session.SingleSignOutHandler.init(SingleSignOutHandler.java:130) at org.jasig.cas.client.session.SingleSignOutFilter.init(SingleSignOutFilter.java:54) ………………………………… package com.audaque.gm.config; import com.audaque.gm.modules.sys.shiro.ShiroPermsFilterFactoryBean;……
阅读全文
2024年4月28日
SpringBoot中Shiro使用Pac4j集成CAS认证 Pac4j 简介 Pac4j与Shiro,Spring Security一样都是权限框架,并且提供了OAuth - SAML - CAS - OpenID Connect - HTTP - OpenID - Google App Engine - Kerberos (SPNEGO) 的认证集成。且可… pac4j探索(一)之buji-pac4j 、facebo……
阅读全文
2024年4月28日
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 >[font=-apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif][color=#24292e][b][/b][/color][/font][/align][align=left][font=-apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif][color=#24292e][b] <dependency>[/b][/color][/font][/align][align=left][font=-apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif][color=#24292e][b] <groupId>org.pac4j</groupId>[/b][/color][/font][/align][align=left][font=-apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif][color=#24292e][b] <artifactId>pac4j-cas</artifactId>[/b][/color][/font][/align][align=left][font=-apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif][color=#24292e][b] <version>3.8.3</version>[/b][/color][/font][/align][align=left][font=-apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif][color=#24292e][b] </dependency>[/b][/color][/font][/align][align=left][font=-apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif][color=#24292e][b][/b][/color][/font][/align][align=left][font=-apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif][color=#24292e][b] <dependency>[/b][/color][/font][/align][align=left][font=-apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif][color=#24292e][b] <groupId>io.buji</groupId>[/b][/color][/font][/align][align=left][font=-apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif][color=#24292e][b] <artifactId>buji-pac4j</artifactId>[/b][/color][/font][/align][align=left][font=-apple-system, system-ui, Segoe UI,……
阅读全文
2024年4月28日
一、现存问题 1.1 现存问题 认证(登录):认证操作流程都差不多,但是每次都需要手动的基于业务代码去实现,很麻烦! 授权:如果权限控制粒度比较粗,可以自身去实现,但是如果控制粒度比较细,操作麻烦! 分布式会话管理:单体项目时,需要依赖Web容器的Session实现会话,搭建了集群或者是分布式……
阅读全文
2024年4月28日
博主是一位二线城市小企业的架构师,擅长开源项目架构的使用与落地。而在过去中走过了不少弯路,也遇到了很多挫折。所以博主想把自己的经验整理成文章传授给大家。 在这里能学到什么?? 1.如果你想入坑java,博主会提供文章,资料,视频,从零开始带你玩转java,效果绝对比在外培训强的多。 2……
阅读全文
2024年4月28日
2018-08-29更新:由于pac4j 3.1 版本未支持单点登出,故升级到 4.0.0 版本,pac4j-cas 升级到 3.0.2版本,可以实现单点登出。 首先是 maven 配置。 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>org.pac4j</groupId> <artifactId>pac4j-cas</artifactId> <version>3.0.2</version> </dependency> <dependency> <groupId>io.buji</groupId> <artifactId>buji-pac4j</artifactId> <version>4.0.0</version> <exclusions> <exclusion> <artifactId>shiro-web</artifactId> <groupId>org.apache.shiro</groupId> </exclusion> </exclusions> </dependency> import io.buji.pac4j.filter.LogoutFilter; import io.buji.pac4j.filter.SecurityFilter; import io.buji.pac4j.subject.Pac4jSubjectFactory; import org.apache.shiro.session.mgt.SessionManager; import org.apache.shiro.session.mgt.eis.MemorySessionDAO; import org.apache.shiro.session.mgt.eis.SessionDAO; import org.apache.shiro.spring.LifecycleBeanPostProcessor; import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; import org.apache.shiro.spring.web.ShiroFilterFactoryBean; import org.apache.shiro.web.mgt.DefaultWebSecurityManager; import org.apache.shiro.web.servlet.SimpleCookie; import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; import org.pac4j.core.config.Config; import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.DependsOn; import org.springframework.web.filter.DelegatingFilterProxy;<br>import org.jasig.cas.client.session.SingleSignOutFilter; import javax.servlet.DispatcherType; import……
阅读全文