基于CAS的单点登录SSO[5]: 基于Springboot实现CAS客户端的前后端分离
2017-08-30 23:16
2261 查看
基于CAS的单点登录SSO[5]: 基于Springboot实现CAS客户端的前后端分离
作者:家辉,日期:2017-08-24 CSDN博客: http://blog.csdn.net/gobitan
摘要:现在大部分系统的开发都已经实行前后端彻底分离的开发,而CAS官方的示例还是采用JSP方式的。本文实现了基于Springboot的CAS客户端前后分离示例。
第一步:创建一个包含web支持的Springboot工程。创建方法具体可以参考我之前的文章:http://blog.csdn.net/gobitan/article/details/76462856
包名为:cn.dennishucd,工程名为casclient。
第二步:加入cas-client-autoconfig-support依赖
在pom.xml中加入如下依赖:
第三步:配置CAS服务器和客户端地址
在application.properties中加入如下配置:
注意:需在客户端的主机的/etc/hosts加上casclient.com的映射。如果是本机,可以按如下方式加:
127.0.0.1 casclient.com
第四步:配置工程支持Cas客户端
改造主类CasclientApplication以下几点:
[1] 加入注解@EnableCasClient增加对Cas客户端的支持;
[2] 加入注解@RestController支持SpringMVC RESTfule;
[3] 增加hello方法;
主类如下:
第五步:增加一个html静态资源,以便登录后返回一个页面
在casclient/src/main/resources/static中加入index.html,内容如下:
第六步:改造CAS服务器端支持HTTP
根据前面搭建CAS服务器的过程,CAS服务器默认不支持HTTP,只支持HTTPS。而前后端分离的程序HTTPS通常由nginx来完成,所以,本文的demo采用HTTP。这里需要对CAS服务器做一点改造。
[1] 在cas-overlay-template服务器工程下创建/src/main/resources/services目录,然后将cas-overlay-template/target/cas/WEB-INF/classes/services/HTTPSandIMAPS-10000001.json文件拷贝到刚创建的service目录下。
[2] 修改HTTPSandIMAPS-10000001.json内容如下:
核心的修改就是在serviceId中增加了http。修改完之后,执行./build.sh重新启动CAS服务器。
第七步:测试前后端分离的CAS客户端
注意:需在CAS客户端所在主机把casclient.com的域名和IP地址映射加上。
先访问:http://casclient.com:8080/index.html,系统会跳转到CAS服务器的登录地址。成功后返回到index.html页面。此时,如果再请求http://casclient.com:8080/hello也会成功。同理,先测试hello地址,系统也会跳转到CAS服务器的登录地址。
其他:如果想抓包查看CAS客户端和服务器之间的交互,可以在CAS服务器端将server.ssl.enabled的值设置为false即可将服务器更换为HTTP。然后同时将客户端配置中服务器地址中的https改为http即可。
参考资料:
[1] https://github.com/Unicon/cas-client-autoconfig-support
作者:家辉,日期:2017-08-24 CSDN博客: http://blog.csdn.net/gobitan
摘要:现在大部分系统的开发都已经实行前后端彻底分离的开发,而CAS官方的示例还是采用JSP方式的。本文实现了基于Springboot的CAS客户端前后分离示例。
第一步:创建一个包含web支持的Springboot工程。创建方法具体可以参考我之前的文章:http://blog.csdn.net/gobitan/article/details/76462856
包名为:cn.dennishucd,工程名为casclient。
第二步:加入cas-client-autoconfig-support依赖
在pom.xml中加入如下依赖:
<dependency> <groupId>net.unicon.cas</groupId> <artifactId>cas-client-autoconfig-support</artifactId> <version>1.5.0-GA</version> </dependency>
第三步:配置CAS服务器和客户端地址
在application.properties中加入如下配置:
cas.server-url-prefix=https://cas.example.org:8443/cas cas.server-login-url=https://cas.example.org:8443/cas/login cas.client-host-url=http://casclient.com:8080 cas.validation-type=CAS
注意:需在客户端的主机的/etc/hosts加上casclient.com的映射。如果是本机,可以按如下方式加:
127.0.0.1 casclient.com
第四步:配置工程支持Cas客户端
改造主类CasclientApplication以下几点:
[1] 加入注解@EnableCasClient增加对Cas客户端的支持;
[2] 加入注解@RestController支持SpringMVC RESTfule;
[3] 增加hello方法;
主类如下:
package cn.dennishucd.casclient; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import net.unicon.cas.client.configuration.EnableCasClient; @SpringBootApplicationient public class CasclientApplication { public static void main(String[] args) { SpringApplication.run(CasclientApplication.class, args); } @GetMapping("/hello") public String hello() { return "Hello World!"; } }
第五步:增加一个html静态资源,以便登录后返回一个页面
在casclient/src/main/resources/static中加入index.html,内容如下:
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"> </head> <body> <h1>Hello, world!</h1> </body> </html>
第六步:改造CAS服务器端支持HTTP
根据前面搭建CAS服务器的过程,CAS服务器默认不支持HTTP,只支持HTTPS。而前后端分离的程序HTTPS通常由nginx来完成,所以,本文的demo采用HTTP。这里需要对CAS服务器做一点改造。
[1] 在cas-overlay-template服务器工程下创建/src/main/resources/services目录,然后将cas-overlay-template/target/cas/WEB-INF/classes/services/HTTPSandIMAPS-10000001.json文件拷贝到刚创建的service目录下。
[2] 修改HTTPSandIMAPS-10000001.json内容如下:
核心的修改就是在serviceId中增加了http。修改完之后,执行./build.sh重新启动CAS服务器。
第七步:测试前后端分离的CAS客户端
注意:需在CAS客户端所在主机把casclient.com的域名和IP地址映射加上。
{ "@class" : "org.apereo.cas.services.RegexRegisteredService", "serviceId" : "^(https|imaps|http)://.*", "name" : "HTTPS, IMAPS and HTTP", "id" : 10000001, "description" : "This service definition authorizes all application urls that support HTTPS, IMAPS and HTTP protocols.", "evaluationOrder" : 10000 }
先访问:http://casclient.com:8080/index.html,系统会跳转到CAS服务器的登录地址。成功后返回到index.html页面。此时,如果再请求http://casclient.com:8080/hello也会成功。同理,先测试hello地址,系统也会跳转到CAS服务器的登录地址。
其他:如果想抓包查看CAS客户端和服务器之间的交互,可以在CAS服务器端将server.ssl.enabled的值设置为false即可将服务器更换为HTTP。然后同时将客户端配置中服务器地址中的https改为http即可。
参考资料:
[1] https://github.com/Unicon/cas-client-autoconfig-support
相关文章推荐
- vue+springboot前后端分离实现单点登录跨域问题解决方法
- 基于springboot+vue+element+ueditor实现前后端分离的富文本框实现
- shiro,基于springboot,基于前后端分离,从登录认证到鉴权,从入门到放弃
- SpringBoot+Vue.js实现前后端分离的文件上传功能
- 基于springboot的shiro sso统一登录系统平台搭建遇到的坑
- spring + shiro + cas 实现sso单点登录
- SSO 基于CAS实现单点登录 实例解析(二)
- spring + shiro + cas 实现sso单点登录
- SSO 基于CAS实现单点登录 实例解析(二)
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十七):登录验证码实现(Captcha)
- spring boot 1.5.4 集成shiro+cas,实现单点登录和权限控制
- Spring-boot整合Swagger 实现前后端分离,前后端分离测试
- (转)基于CAS实现单点登录(SSO):cas client端的退出问题
- SpringBoot 实现前后端分离的跨域访问(CORS)
- 基于CAS实现单点登录(SSO):自定义登录验证方法
- springboot+shiro+cas实现单点登录之shiro端搭建
- spring + shiro + cas 实现sso单点登录
- spring + shiro + cas 实现sso单点登录
- 前后端分离 单点登录SSO 纯前端实现单点登录SSO
- 基于CAS的单点登录SSO[4]: 加入两个CAS客户端测试单点登录