https://www.jianshu.com/p/efd32ace20dc

 

 

前言

登陆是一个项目的基础,几乎任何项目都需要包括登陆模块,网上大部分登陆都是使用的shrio,个人感觉这种东西很老,而且不好用,偶然之前发现了一个叫keycloak的sso开源项目, 感觉挺不错的,这篇文章主要讲解如何使用springboot和keycloak进行结合。

版本

  1. springboot: 1.4.3.RELEASE 版本
  2. keycloak: 2.5.1.Final 版本
  3. vue: 2.1.0 版本

项目搭建

  1. 首先搭建keycloak的服务 (略)
  2. 编写前端代码(用vue2写的简单的一个spa,略)
  3. 编写springboot的服务(略)
  4. 加入核心依赖

  1. 在springboot的配置文件中加入

  1. 在resources的目录下加入 keycloak.json配置文件

  1. 配置springmvc的跨域filter

  1. 配置keycloak和spring security结合的配置文件

  1. 对应的接口上增加可以执行的用户角色

遇到的坑

  1. 对应keycloak的用户权限需要使用 hasAnyAuthority而不是 hasAnyRole,并且需要在KeycloakSecurityConfig类中加入@EnableGlobalMethodSecurity(prePostEnabled = true)注解
  2. keycloak-spring-security-adapterspring-boot-adpater两个依赖不能同时使用
  3. cors的跨域的配置,需要CorsFilterConfig的filter类配合KeycloakSecurityConfig类中的 requestMatchers(CorsUtils::isCorsRequest).permitAll()一起使用

完整的项目地址(包括了简单的前端和后端代码,不会写前端,前端代码比较垃圾。。 需要完善 ):

https://github.com/dragontree101/springboot-keycloak-demo

作者:LOC_Thomas
链接:https://www.jianshu.com/p/efd32ace20dc
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

发表评论

电子邮件地址不会被公开。