作者:蓝雄威,叩丁狼教育高级讲师。原创文章,转载请注明出处。
一、前言
我们自己动手写单点登录的服务端目的是为了加深对单点登录的理解.如果你们公司想实现单点登录/单点注销功能,推荐使用开源的单点登录框架CAS.我们后面的章节也会带同学们快速搭建CAS Server和CAS Client的环境.
二、条件
如果没看前面章节的同学,请返回去观看这几章内容,不然这代码是不太好理解的.
- SSO单点登录教程(一)多系统的复杂性
- SSO单点登录教程(二)单点登录流程分析
- SSO单点登录教程(三)单点注销流程分析
三、环境要求
- JDK1.7+
- Maven3.3
- Eclipse/IDEA
四、准备工作
因为我们主要讲的是跨域的单点登录,所以我们需要把不同项目部署到不同域名下.不可能为了完成这个代码,让同学们去阿里云买三台主机,映射三个IP.所以我们的实验就在本机来实现.我们需要修改host文件,让三个域名映射到本机.
host文件存放的位置:C:\Windows\System32\drivers\etc
打开host文件之后,在最后追加如下配置:这段配置的意思是,我们在浏览器中输入:127.0.0.1 www.sso.com 127.0.0.1 www.crm.com 127.0.0.1 www.wms.com
http://www.sso.com
http://www.crm.com
http://www.wms.com
其实访问的都是本机:127.0.0.1
PS:有些同学打开这个文件之后,保存的时候可能被拒绝.原因可能是权限不够.解决方法:把host文件拷贝到桌面(有权限的地方即可),修改好之后再把:C:\Windows\System32\drivers\etc
的host文件覆盖.
五、下载基础项目
基础项目代码下载链接在页面底部.
我在github上传的是maven结构的项目.如果需要导入到Eclipse/IDEA中需要生成对应的Eclipse/IDEA的配置文件.cmd
命令进入到项目的根目录 $项目存放位置/sso-server-base-project
- 如果是Eclipse,运行
mvn eclipse:eclipse
- 如果是IDEA,运行
mvn idea:idea
处理好之后,把项目导入到工具中,我们就可以开始开发了.
六、项目结构说明
服务端
sso-server-base-project目录
src
main
java
resources
-applicationContext.xml
webapp
static
WEB-INF
views
-login.jsp
-logOut.jsp
-web.xml
-pom.xml
服务端项目就只配置了SpringMVC的环境.pom.xml
:项目的pom文件,已经配置的Tomcat插件端口为:8443
applicationContext.xml
:spring配置文件static
:静态资源目录,存放css,jslogin.jsp
:登陆页面logOut.jsp
:登出页面web.xml
:web的配置文件,配置前端请求DispatherServlet
客户端
sso-client-base-project目录
src
main
java
-cn.wolfcode.sso.controller.MainServlet.java
-cn.wolfcode.sso.controller.LogOutServlet.java
webapp
WEB-INF
views
-main.jsp
-web.xml
客户端没有使用Spring框架.使用Servlet3.0
@WebServlet(name = "mainServlet", urlPatterns = "/main")
在Servlet类上贴这个注解就可以进行映射.MainServlet.java
:处理主页请求/main的servlet.LogOutServlet.java
:处理登出的请求/logOut的servletmain.jsp
:首页
客户端项目导入之后,运行tomcat7:run
命令,在浏览器中输入http://www.crm.com:8088/main
会看到如下界面: