精选列表

搜索[SpringBoot],共4126篇文章
优秀的个人博客,低调大师

SpringBoot中Shiro使用Pac4j集成CAS认证

Pac4j 简介 Pac4j与Shiro,Spring Security一样都是权限框架,并且提供了OAuth - SAML - CAS - OpenID Connect - HTTP - OpenID - Google App Engine - Kerberos (SPNEGO) 的认证集成。且可以和shiro,security等权限框架集成。 Pac4j CAS认证流程 代码 关键部分 说明: pac4j-cas与shiro的集成是通过过滤器完成cas认证,提供相应的Pac4jRealm来与shiro集成。代码过多就不一一列出了,详细的请下载附件,附件中代码屏蔽了公司相关代码。自身项目需要保持CAS与非CAS并存所以把CAS登录固定到指定路径了。 POM <!--cas认证 --> <dependency> <groupId>org.pac4j</groupId> <artifactId>pac4j-cas</artifactId> <version>3.8.3</version> </dependency> <!-- pac4j与shiro集成--> <dependency> <groupId>io.buji</groupId> <artifactId>buji-pac4j</artifactId> <version>4.1.1</version> </dependency> JAVA配置 //Pac4jConfig.java 配置中 @Bean public CasConfiguration casConfig() { final CasConfiguration configuration = new CasConfiguration(); //CAS server登录地址 configuration.setLoginUrl(casServerUrl + "/login"); configuration.setAcceptAnyProxy(true); configuration.setPrefixUrl(casServerUrl + "/"); //监控CAS服务端登出,登出后销毁本地session实现双向登出 DefaultLogoutHandler logoutHandler = new DefaultLogoutHandler(); logoutHandler.setDestroySession(true); configuration.setLogoutHandler(logoutHandler); return configuration; } //ShiroConfig.java 中 //shiro 过滤器配置中增加SecurityFilter,CallbackFilter ,LogoutFilter @Bean("shiroFilter") public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); shiroFilterFactoryBean.setSecurityManager(securityManager); //获取filters Map<String, Filter> filters = shiroFilterFactoryBean.getFilters(); filters.put("authc", new MySystemFilter()); // cas 资源认证拦截器 SecurityFilter securityFilter = new SecurityFilter(); securityFilter.setConfig(exPac4jConfig); securityFilter.setClients(clientName); filters.put("securityFilter", securityFilter); //cas 认证后回调拦截器 CallbackFilter callbackFilter = new CallbackFilter(); callbackFilter.setConfig(exPac4jConfig); filters.put("callbackFilter", callbackFilter); shiroFilterFactoryBean.setFilters(filters); // 本地登出同步登出CAS服务器 LogoutFilter pac4jCentralLogout = new LogoutFilter(); pac4jCentralLogout.setConfig(exPac4jConfig); pac4jCentralLogout.setCentralLogout(true); pac4jCentralLogout.setLocalLogout(true); filters.put("pac4jCentralLogout", pac4jCentralLogout); //拦截器. Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>(); filterChainDefinitionMap.put("/logout", "logout"); filterChainDefinitionMap.put("/pac4jCentralLogout", "pac4jCentralLogout"); filterChainDefinitionMap.put("/cas", "securityFilter"); filterChainDefinitionMap.put("/callback", "callbackFilter"); filterChainDefinitionMap.put("/**", "authc"); shiroFilterFactoryBean.setLoginUrl("/login"); shiroFilterFactoryBean.setSuccessUrl("index"); shiroFilterFactoryBean.setUnauthorizedUrl("/error/403"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); return shiroFilterFactoryBean; } @Bean public SecurityManager securityManager() { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setAuthenticator(exModularRealmAuthenticator()); List<Realm> realms = new ArrayList<>(); realms.add(exSystemRealm()); // casRealm继承Pac4jRealm 与shiro的Realm使用方法相同 realms.add(casRealm); securityManager.setRealms(realms); securityManager.setCacheManager(redisCacheManager()); //增加pac4jSubjectFactory securityManager.setSubjectFactory(pac4jSubjectFactory); securityManager.setRememberMeManager(cookieRememberMeManager()); securityManager.setSessionManager(sessionManager()); return securityManager; } 问题 默认配置不支持CAS登出本地项目退出 重写ShiroSessionStore见ExShiroSessionStore.java 附件:链接: https://pan.baidu.com/s/1E-6uTYpOFn2ldAxd_k0XvQ 提取码: 8nhx 参考资料 https://www.cnblogs.com/suiyueqiannian/p/9359597.html http://www.pac4j.org/docs/index.html https://github.com/bujiio/buji-pac4j https://github.com/gkaigk1987/shiro-pac4j-cas-demo

优秀的个人博客,低调大师

SpringBoot开发案例之Nacos配置管理中心

前言 在开发过程中,通常我们会配置一些参数来实现某些功能,比如是否开启某项服务,告警邮件配置等等。一般会通过硬编码、配置文件或者数据库的形式实现。 那么问题来了,如何更加优雅的实现?欢迎来到 Nacos 的世界! Nacos 配置管理 Nacos 是阿里巴巴的开源的项目,全称 Naming Configuration Service ,专注于服务发现和配置管理领域。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 生态图 如 Nacos 全景图所示,Nacos 无缝支持一些主流的开源生态,例如 Spring Cloud Apache Dubbo and Dubbo Mesh TODO Kubernetes and CNCF TODO。 使用 Nacos 简化服务发现、配置管理、服务治理及管理的解决方案,让微服务的发现、管理、共享、组合更加容易。 Nacos Spring Boot 快速开始 这里以为 Spring-Boot2.x 为例: pom.xml引入依赖: <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-starter</artifactId> <version>0.2.1</version> </dependency> 启动类: package com.itstyle.nacos; import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * 启动类 * 创建者 爪哇笔记 https://blog.52itstyle.vip * 创建时间 2019年7月14日 * dataId 可以根据自己的项目自定义 * autoRefreshed 是一个布尔值, Nacos 就会把最新的配置推送到该应用的所有机器上,简单而高效。 */ @SpringBootApplication @NacosPropertySource(dataId = "itstyle.blog", autoRefreshed = true) public class Application { private static final Logger logger = LoggerFactory.getLogger(Application.class); public static void main(String[] args){ SpringApplication.run(Application.class, args); logger.info("启动"); } 使用案例: package com.itstyle.nacos; import com.alibaba.nacos.api.config.annotation.NacosValue; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; /** * 创建者 爪哇笔记 https://blog.52itstyle.vip */ @Controller @RequestMapping(value = "config") public class NacosConfigController { @NacosValue(value = "${useLocalCache:false}", autoRefreshed = true) private boolean useLocalCache; @RequestMapping(value = "/get", method = RequestMethod.GET) @ResponseBody public boolean get() { return useLocalCache; } } 配置文件引入: # 安全机制,建议走内网、配置防火墙 nacos.config.server-addr=127.0.0.1:8848 服务端安装配置请参考: https://nacos.io/zh-cn/docs/quick-start.html 主页: dataId 一定要与系统配置保持一致,配置内容为键值对的方式。 实例化数据库 Nacos Server 默认使用的是内嵌的数据库,生产环境建议修改使用 mysql 数据库存储配置信息。 在配置文件application.properties添加配置: spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=root 创建数据库,在Nacos Server conf文件夹下,找到nacos-mysql.sql文件,导入创建的数据库即可。 Nacos默认账号密码为:nacos,修改密码需要使用引入: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> 然后使用代码加密: package com.itstyle.nacos; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; /** * 创建者 爪哇笔记 https://blog.52itstyle.vip */ public class PasswordEncoderUtil { public static void main(String[] args) { System.out.println(new BCryptPasswordEncoder().encode("nacos")); } } 小结 总的来说,Nacos 还是蛮方便的,配置中心也仅仅是它的一个小功能而已。 参考 https://nacos.io/en-us/

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。