sso单点登录原理与简单实现

一、单点登录概念理解

        在多个应用系统,或者是分布式系统中,用户只需要登录一次,再访问其他系统,就不需要再次登录,自动登录。

二、单点登录实现原理

        要实现单点登录,主要需要解决两个问题:1.session共享,2.ajax跨域问题。可以将用户身份信息存储在第三方单点登录认证服务器,可以使用cas单点登录框架实现,cas共享用户身份信息,cookie存储用户身份信息唯一标识(所以要实现单点登录,浏览器不能禁用cookie),cas的协议过程如下图:


三、使用cas实现单点登录

        1.下载cas服务端cas-server-webapp-4.0.0.war ,将其改名为 cas.war 部署到 tomcat 目录下的 webapps 下,浏览器输入 http://localhost:8080/cas/login,即可看到登录页面:


    2.cas客户端搭建,可以搭建两个或两个以上的客户端项目进行测试,搭建参考下面

        (1)搭建maven工程引入cas相关依赖

org.jasig.cas.client

cas-client-core

3.3.3

javax.servlet

servlet-api

2.5

provided

(2)添加 web.xml

xmlns="http://java.sun.com/xml/ns/javaee"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

version="2.5">

org.jasig.cas.client.session.SingleSignOutHttpSessionListener

CAS Single Sign Out Filter

org.jasig.cas.client.session.SingleSignOutFilter

CAS Single Sign Out Filter

/*

CASFilter

org.jasig.cas.client.authentication.AuthenticationFilter

casServerLoginUrl

http:///localhost:8080/cas/login

serverName

http://localhost:9091

CASFilter

/*

CAS Validation Filter

org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter

casServerUrlPrefix

http:///localhost:8080/cas

serverName

http://localhost:9091

CAS Validation Filter

/*

CAS HttpServletRequest Wrapper Filter

org.jasig.cas.client.util.HttpServletRequestWrapperFilter

CAS HttpServletRequest Wrapper Filter

/*

CAS Assertion Thread Local Filter

org.jasig.cas.client.util.AssertionThreadLocalFilter

CAS Assertion Thread Local Filter

/*

    3.单点登录测试

        (1)启动cas服务端

        (2)启动客户端工程1和客户端工程2

        (3)在浏览器分别访问两个客户端项目,均会跳转到cas登录页面,输入用户名密码,访问其中一个客户端项目后,再访问另一个客户端项目,不需要再进行登录,单点登录实现。

        4.以上测试的登录页面是cas自带的登录页面,可改为自己项目的登录页面,同时可配置用户名和密码从数据库中读取,具体实现可参考其他资料,这里不再叙述。

你可能感兴趣的:(sso单点登录原理与简单实现)