第十五章 单点登录
2015-11-13 21:54
225 查看
Shiro 1.2开始提供了Jasig CAS单点登录的支持,单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录。此处我们使用Jasig CAS v4.0.0-RC3版本:
https://github.com/Jasig/cas/tree/v4.0.0-RC3
Jasig CAS单点登录系统分为服务器端和客户端,服务器端提供单点登录,多个客户端(子系统)将跳转到该服务器进行登录验证,大体流程如下:
1、访问客户端需要登录的页面http://localhost:9080/ client/,此时会跳到单点登录服务器https://localhost:8443/ server/login?service=https://localhost:9443/ client/cas;
2、如果此时单点登录服务器也没有登录的话,会显示登录表单页面,输入用户名/密码进行登录;
3、登录成功后服务器端会回调客户端传入的地址:https://localhost:9443/client/cas?ticket=ST-1-eh2cIo92F9syvoMs5DOg-cas01.example.org,且带着一个ticket;
4、客户端会把ticket提交给服务器来验证ticket是否有效;如果有效服务器端将返回用户身份;
5、客户端可以再根据这个用户身份获取如当前系统用户/角色/权限信息。
本章使用了和《第十四章 SSL》一样的数字证书。
1、数字证书使用和《第十四章 SSL》一样的数字证书,即将localhost.keystore拷贝到shiro-example-chapter15-server模块根目录下;
2、在pom.xml中添加Jetty Maven插件,并添加SSL支持:
Java代码
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.8.v20121106</version>
<configuration>
<webAppConfig>
<contextPath>/${project.build.finalName}</contextPath>
</webAppConfig>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8080</port>
</connector>
<connector implementation="org.eclipse.jetty.server.ssl.SslSocketConnector">
<port>8443</port>
<keystore>${project.basedir}/localhost.keystore</keystore>
<password>123456</password>
<keyPassword>123456</keyPassword>
</connector>
</connectors>
</configuration>
</plugin>
3、修改src/main/webapp/WEB-INF/deployerConfigContext.xml,找到primaryAuthenticationHandler,然后添加一个账户:
Java代码
<entry key="zhang" value="123"/>
其也支持如JDBC查询,可以自己定制;具体请参考文档。
4、mvn jetty:run启动服务器测试即可:
访问https://localhost:8443/chapter15-server/login将弹出如下登录页面:
https://github.com/Jasig/cas/tree/v4.0.0-RC3
Jasig CAS单点登录系统分为服务器端和客户端,服务器端提供单点登录,多个客户端(子系统)将跳转到该服务器进行登录验证,大体流程如下:
1、访问客户端需要登录的页面http://localhost:9080/ client/,此时会跳到单点登录服务器https://localhost:8443/ server/login?service=https://localhost:9443/ client/cas;
2、如果此时单点登录服务器也没有登录的话,会显示登录表单页面,输入用户名/密码进行登录;
3、登录成功后服务器端会回调客户端传入的地址:https://localhost:9443/client/cas?ticket=ST-1-eh2cIo92F9syvoMs5DOg-cas01.example.org,且带着一个ticket;
4、客户端会把ticket提交给服务器来验证ticket是否有效;如果有效服务器端将返回用户身份;
5、客户端可以再根据这个用户身份获取如当前系统用户/角色/权限信息。
本章使用了和《第十四章 SSL》一样的数字证书。
服务器端
我们使用了Jasig CAS服务器v4.0.0-RC3版本,可以到其官方的github下载:https://github.com/Jasig/cas/tree/v4.0.0-RC3下载,然后将其cas-server-webapp模块封装到shiro-example-chapter15-server模块中,具体请参考源码。1、数字证书使用和《第十四章 SSL》一样的数字证书,即将localhost.keystore拷贝到shiro-example-chapter15-server模块根目录下;
2、在pom.xml中添加Jetty Maven插件,并添加SSL支持:
Java代码
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.8.v20121106</version>
<configuration>
<webAppConfig>
<contextPath>/${project.build.finalName}</contextPath>
</webAppConfig>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8080</port>
</connector>
<connector implementation="org.eclipse.jetty.server.ssl.SslSocketConnector">
<port>8443</port>
<keystore>${project.basedir}/localhost.keystore</keystore>
<password>123456</password>
<keyPassword>123456</keyPassword>
</connector>
</connectors>
</configuration>
</plugin>
3、修改src/main/webapp/WEB-INF/deployerConfigContext.xml,找到primaryAuthenticationHandler,然后添加一个账户:
Java代码
<entry key="zhang" value="123"/>
其也支持如JDBC查询,可以自己定制;具体请参考文档。
4、mvn jetty:run启动服务器测试即可:
访问https://localhost:8443/chapter15-server/login将弹出如下登录页面:
相关文章推荐
- 在64位Ubuntu 14.04 LTS 中安装praat
- 遍历一个文件夹下面的文件(半原创)
- 第十三章 RememberMe
- 第十四章 SSL
- Mingw64编译wxWidgets3.0.2常见错误
- ssh相关操作
- 作业:按钮控制打开关闭新窗口及新窗口按钮关闭父窗口
- LightOJ 1036 - A Refining Company(dp)
- 创建网页版UFT脚本技术点
- 哈密顿算符
- HDU 5493 Queue(线段树)
- Poj.2689 Prime Distance【素数筛选】 2015/11/13
- 第十二章 与Spring集成
- Nginx配置详解
- java 单引号和双引号的区别
- 图形绘制中的PorterDuffXfermode
- C++学习第二课
- 图形绘制中的PorterDuffXfermode
- 树莓派I2C配置
- C++常见面试题