SSO 单点登录简单流程(cas)

配置服务端(链接数据库)

第一步:

下载cas-server端,解压开,

中的解压开,将该包中的内容放入cas文件夹(新建文件夹)中

然后将这个文件夹放入到服务端的服务器(tomcat)中

将解压开的文件夹中的

放入的WEB-INF 下的lib 目录中

第二步:打开x:xxxxxwebappscasWEB-INF的deployerConfigContext.xml并编辑

加入以下代码(注意:顺序不要放错了)

 第三步:在C:WindowsSystem32driversetc的hosts中配置域名访问(也可以不用配置,随意)

本地配置了 所以效果如下:

 此处的域名https 是因为在jdk和tomcat中配置了证书 (也可以不用这样操作)

以上几步就将SSO单点登录的服务端配置起来了

===================================================================

配置客户端

 在项目中的lib目录下添加这两个jar包(在cas-client中)。

而后在项目的web.xml 加入以下代码

<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置-->
<listener>
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<!-- 该过滤器用于实现单点登出功能,可选配置 -->
<filter>
<filter-name>CAS Single Sign Out Filter</filter-name>
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Single Sign Out Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CAS Filter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://sso.sun.com:18181/cas/login</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://localhost:18080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
<filter>
<filter-name>CAS Validation Filter</filter-name>
<filter-class>
org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class>
<init-param>
<param-name>casServerUrlPrefix</param-name>
<param-value>https://sso.sun.com:18181/cas</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://localhost:18080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Validation Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--
该过滤器负责实现HttpServletRequest请求的包裹,比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。
-->
<filter>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--
该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。比如AssertionHolder.getAssertion().getPrincipal().getName()。
-->
<filter>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

标红的是服务端地址  标蓝的是客户端系统地址

配置以上 皆可以实现单点登录

在系统A中添加另外一个系统B的跳转链接,则在登录A系统之后,点击跳转B系统 则一样可以过去(同域情况),原因是带了ticket到另外一个系统中了

 如果想要有 验证码 等操作 ,需要按照cas服务端的路径 写相应的java逻辑 完了 将编译的class文件放入到cas服务端的文件夹中  然后在deployerConfigContext.xml配置即可

原文地址:https://www.cnblogs.com/austinspark-jessylu/p/6911563.html