官网:http://jasig.github.io/cas/
Cas Server下载:http://developer.jasig.org/cas/
Cas Client下载:http://developer.jasig.org/cas-clients/
测试环境:
  jdk:java version "1.8.0_60"
  tomcat:apache-tomcat-7.0.65
  CAS Server:cas-server-4.0.0-release.zip
  CAS Client:cas-client-3.1.12-release.zip

首先安装jdk、Tomcat ,这里安装不做介绍。

进入正题:

一、使用java keytool工具为系统生成https证书,并为系统注册

1、生成证书文件
keytool -genkey -alias asq -keyalg RSA -keystore g:/keys/asq

 

2、导出证书文件
keytool -export -file g:/keys/asq.crt -alias asq -keystore g:/keys/asq

生成到指定目录下的两个文件

3、将证书导入到客户端JRE中(注意、是导入JRE中),如果security中已经存在cacerts,需要先将其删除。
keytool -import -keystore "C:\Program Files\Java\jdk1.8.0_131\jre\lib\security\cacerts" -file g:/keys/asq.crt -alias asq

二、配置服务器端 (单独放到一个Tomcat中 ,端口号8080,并进行如下配置)
 1、从http://developer.jasig.org/cas/上下载cas服务器端cas-server-4.0.0-release.zip,在modules目录下找到cas-server-webapp-4.0.0.war,
将其复制到%TOMCAT_HOME%\webapps下,并将名称改为cas.war

 2、修改%TOMCAT_HOME%\conf\server.xml文件,添加以下代码

<!--keystoreFile  生成的证书文件  keystorePass  秘钥库密码  -->
<Connector SSLEnabled="true" clientAuth="false" 
           keystoreFile="F:/keys/castest" keystorePass="123456" 
   maxThreads="150" port="8443" 
   protocol="org.apache.coyote.http11.Http11Protocol" 
   scheme="https" secure="true" sslProtocol="TLS"/>

3、启动Tomcat,测试:https://localhost:8443/

如果可以正常访问,说明证书安装成功

4.访问https://localhost:8443/cas/login,出现以下画面:

输入账号和密码
  casuser
  Mellon
登录之后:

此时说明服务器端已经配置成功。可通过https://localhost:8443/cas/logout退出登录

三、配置cas client 客户端(单独一个Tomcat服务器,注意与cas server 的服务器端口号不要冲突,这里默认改成18080)

1、创建maven web项目 cas-client1。(之前已经创建一个,要部署多个client ,所以创建cas-client2)

创建出简单的一个web项目,只有一个index.jsp页面 ,以下是client2的目录结构

2、在pom.xml文件中添加cas-client 的依赖(可以手动添加,将从http://developer.jasig.org/cas-clients/上下载cas-client-3.1.12-release.zip,
在modules目录下找到cas-client-core-3.1.12.jar、commons-collections-3.2.jar、commons-logging-1.1.jar复制到项目WEB-INF/lib下)

pom.xml添加以下代码:

    <dependency>
      <groupId>org.jasig.cas</groupId>
      <version>3.1.1</version>
      <artifactId>cas-client-core</artifactId>
    </dependency>

3、在cas-client2项目的web.xml中配置cas 的过滤器

 <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>/CasClient/*</url-pattern>
  </filter-mapping>

  <!-- 该过滤器负责用户的认证工作,必须启用它 -->
  <filter>
    <filter-name>CASFilter</filter-name>
    <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
    <init-param>
      <param-name>casServerLoginUrl</param-name>
      <!--这里是搭建的 cas server 服务端的IP-->
      <param-value>https://sso.castest.com:8443/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>CASFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
  <filter>
    <filter-name>CAS Validation Filter</filter-name>
    <filter-class>
      org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
    <init-param>
      <param-name>casServerUrlPrefix</param-name>
      <param-value>https://sso.castest.com:8443/cas</param-value><!-- 此处必须为登录url/cas/,带有任何其它路径都会报错,如“https://sso.castest.com:8443/cas/login”,这样也会报错。 -->
    </init-param>
    <init-param>
      <param-name>serverName</param-name>
      <!--这里注意url 的路径,sso.client1.com 在host文件中配置对应的127.0.0.1
           端口号一定要与启动Tomcat服务器的端口一致,一般cas server 服务器单独部署,
           -->
      <param-value>http://sso.client1.com: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>

  <!-- ======================== 单点登录结束 ======================== -->

  <!-- session超时定义,单位为分钟 -->
  <session-config>
    <session-timeout>2</session-timeout>
  </session-config>

4、在index.jsp中添加随意标识,用于区分不同的应用程序

5、利用maven打包工具,将项目打压成一个war包,在这里注意:jar包的名称就是对应访问的端口号后面的项目名
在这里使用IDEA的maven工具,点击 package生成war包

在target目录中生成了我们需要的war包

6、将该war包放到cas client Tomcat中的webapps中

7、修改Tomcat目录下的conf中server.xml ,将端口号改为18080 ,具体修改如下:

 <Server port="18005" shutdown="SHUTDOWN">

 <Connector port="18080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

 <Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />
 <!---注意redirectPort 重定向端口号,必须跟cas server的端口号一致-->

8、启动cas-client 的Tomcat 服务器

9、先访问 url1 :localhost:18080/cas-client1/index.jsp

然后访问url2: localhost:18080/cas-client2/index.jsp
当访问url1的时候,成功跳转到cas server服务器上

登录验证之后 ,成功跳转到client1的index.jsp页面

当访问url1 并且登录成功后 ,然后访问url2 ,就不需要再次验证身份,直接跳转到client2的index.jsp页面

一个最简单的单点登录至此全部完成

搭建CAS服务器,并实现一个简单的单点登录的demo的更多相关文章

  1. 自己动手搭建 CAS(Central Authentication Service) 环境,为了单点登录(Single Sign On , 简称 SSO )

    介绍 刚刚搭建 CAS 成功了,现在记录下来,怕以后忘记,同时也给需要帮助的人.CAS 搭建需要服务端和客户端,服务端是 Java 写的,如果自己搭建则需要安装与配置 Java 环境.客户端可以是多种 ...

  2. 【SSO】一个简单的单点登录演示实现

    业务系统的管理后台往往数量众多,且各自需要一套用户名密码来进行登录,不方便使用.因此花了点时间研究如何实现一套单点登录系统. 众所周知,SSO系统设计中,往往需要想办法解决cookie不能跨域的问题, ...

  3. PHP简单实现单点登录功能示例

    1.准备两个虚拟域名 127.0.0.1  www.openpoor.com127.0.0.1  www.myspace.com 2.在openpoor的根目录下创建以下文件 index.PHP 1 ...

  4. 基于CAS的单点登录实战(1)-- 搭建cas服务器

    公司有几个系统想做SSO,然后开始研究cas.系统是Centos7 搭建CAS服务器 cas的版本比较多,先在网上搜了一下各种教程配置经验.本来想搭建最新的CAS版本,然而为了快速部署,选择了网上教程 ...

  5. Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...

  6. 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截

    程序猿修仙之路--数据结构之你是否真的懂数组?   数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构  .要想在之后的江湖历练中通关,数据结构必不可少. ...

  7. 一个简单的MariaDB认证插件demo

    代码地址如下:http://www.demodashi.com/demo/13076.html 一.前言 众所周知(其实可能很多人不知道)MariaDB支持插件认证.在MariaDB中新建用户,常见的 ...

  8. 如何使用AEditor制作一个简单的H5交互页demo

    转载自:http://www.alloyteam.com/2015/06/h5-jiao-hu-ye-bian-ji-qi-aeditor-jie-shao/ 本教程演示如何使用AEditor制作一个 ...

  9. java实现简单的单点登录

    java实现简单的单点登录 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现 ...

随机推荐

  1. 使用js做创建图片及删除图片 若有什么不对或不完整的地方,请大家提出来,谢谢

    首先我们要在<body>中创建一个按钮<button>来用作点击创建图片,在<button>中写一个点击事件(随便命名), 在创建一个<div>存放图片 ...

  2. Android 7.1 屏幕旋转流程分析

    Android 7.1   屏幕旋转流程分析 一.概述 Android屏幕的旋转在framework主要涉及到三个类,结构如图 PhoneWindowManager:为屏幕的横竖屏转换的管理类. Wi ...

  3. myeclipse tomcat java.lang.OutOfMemoryError: PermGen space错误的解决方法

    错误代码: java.lang.OutOfMemoryError: PermGen space 原因分析: myeclipse或tomcat的内容分配的不够用,启动失败 解决方法: 1.找到tomca ...

  4. codeforces 558 E A Simple Task

    题目大意就是给一个字符串,然后多个操作.每次操作能够把每一段区间的字符进行升序或者降序排序,问终于的字符串是如何的. 做法的话就是用线段树维护区间和 一開始仅仅考虑字符串中字符'a'的情况.如果操作区 ...

  5. HDU1598 find the most comfortable road 【并查集】+【枚举】

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  6. Launcher知识的demo,手机管家小伙家与悬浮窗

    Launcher知识的demo.主要仿的手机管家小伙家与悬浮窗的效果.东西比較简单.直接贴代码 主要用到了windowManager 中的更新updateViewLayout(view,params) ...

  7. 【quickhybrid】API的分类:短期API、长期API

    前言 一切就绪,开始规划API,这里在规划前对API进行了一次分类:短期API.长期API 首先申明下,这个是在实际框架演变过程中自创的一个概念,其它混合框架可能也会有这个概念,但应该是会在原生底层来 ...

  8. CentOS 7下Samba服务器的安装与配置

    文基于<CentOS 6.3下Samba服务器的安装与配置>,参照原博文,自己在CentOS7环境上实现,并按照自己的环境修改博文内容 一.简介 Samba是一个能让Linux系统应用Mi ...

  9. IntelliJ Idea 2017 注册码 免费激活方法

    1. 到网站 http://idea.lanyus.com/ 获取注册码. 2.弹窗中选择最后一个页面license server,填入下面一种链接即可: http://idea.iteblog.co ...

  10. 深入理解计算机系统_3e 第五章家庭作业 CS:APP3e chapter 5 homework

    5.13 A. B. 由浮点数加法的延迟,CPE的下界应该是3. C. 由整数加法的延迟,CPE的下界应该是1. D. 由A中的数据流图,虽然浮点数乘法需要5个周期,但是它没有"数据依赖&q ...