zoukankan      html  css  js  c++  java
  • SSO之CAS单点登录实例演示

    一、概述

    此文的目的就是为了帮助初步接触SSO和CAS 的人员提供一个入门指南,一步一步演示如何实现基于CAS的单点登录。

    CAS的官网:http://www.jasig.org/cas

    二、演示环境

    本文演示过程在同一个机器上的(也可以在三台实体机器或者三个的虚拟机上),环境如下:

    • windows7 64位,主机名称:michael-pc

    • JDK 1.6.0_18

    • Tomcat 6.0.29

    • CAS-server-3.4.11、CAS-client-3.2.1

    根据演示需求,用修改hosts 文件的方法添加域名最简单方便(这个非常重要),在文件 C:WindowsSystem32driversetchosts 文件中添加三条

    • 127.0.0.1    demo.micmiu.com

    • 127.0.0.1    app1.micmiu.com

    • 127.0.0.1    app2.micmiu.com

    • demo.micmiu.com  =>> 对应部署cas server的tomcat,这个虚拟域名还用于证书生成

    • app1.micmiu.com  =>>  对应部署app1 的tomcat

    • app2.micmiu.com   =>> 对应部署app2 的tomcat

    三、JDK安装配置

    这个详细过程就不在描述,如果是免安装版的,确保环境变量配置正确。

    本机环境变量:JAVA_HOME=D:jdk,如果看到以下信息则表示安装成功:

    四、安全证书配置

    有关keytool工具的详细运用见:http://www.micmiu.com/lang/java/keytool-start-guide/

    4.1. 生成证书:

    keytool -genkey -alias ssodemo -keyalg RSA -keysize 1024 -keypass michaelpwd -validity 365 -keystore g:ssossodemo.keystore -storepass michaelpwd

    • 截图中需要输入的姓名和上面hosts文件中配置的一致;

    • keypass 和 storepass 两个密码要一致,否则下面tomcat 配置https 访问失败;

    4.2.导出证书:

     keytool -export -alias ssodemo -keystore g:ssossodemo.keystore -file g:ssossodem

    ps:该命令中输入的密码和上面输入的不是同一个密码;如果是多台机器演示,需要在每一台客户端导入该证书。

    五、部署CAS-Server相关的Tomcat

    5.1. 配置HTTPS

    解压apache-tomcat-6.0.29.tar.gz并重命名后的路径为 G:sso omcat-cas,在文件 conf/server.xml文件找到:

    修改成如下:

    参数说明:

    • keystoreFile 就是4.1中创建证书的路径

    • keystorePass 就是4.1中创建证书的密码

    5.2. 验证HTTPS配置
    其他按照默认配置不作修改,双击%TOMCAT_HOME%instartup.bat 启动tomcat-cas 验证https访问配置:

     

    如果看到上述界面表示https 访问配置成功。

    5.3 部署CAS-Server
    CAS-Server 下载地址:http://www.jasig.org/cas/download
    本文以cas-server-3.4.11-release.zip 为例,解压提取cas-server-3.4.11/modules/cas-server-webapp-3.4.11.war文件,把改文件copy到 G:sso omcat-caswebapps 目下,并重命名为:cas.war.
    启动tomcat-cas,在浏览器地址栏输入:https://demo.micmiu.com:8443/cas/login ,回车

    CAS-server的默认验证规则:只要用户名和密码相同就认证通过(仅仅用于测试,生成环境需要根据实际情况修改),输入admin/admin 点击登录,就可以看到登录成功的页面: 

    看到上述页面表示CAS-Server已经部署成功。

    六、部署CAS-Client相关的Tomcat

    6.1Cas-Client 下载

    CAS-Client 下载地址:http://downloads.jasig.org/cas-clients/

    以cas-client-3.2.1-release.zip 为例,解压提取cas-client-3.2.1/modules/cas-client-core-3.2.1.jar

    借以tomcat默认自带的 webappsexamples 作为演示的简单web项目

    6.2 安装配置 tomcat-app1

    解压apache-tomcat-6.0.29.tar.gz并重命名后的路径为 G:sso omcat-app1,修改tomcat的启动端口,在文件conf/server.xml文件找到如下内容:

    启动tomcat-app1,浏览器输入 http://app1.micmiu.com:18080/examples/servlets/ 回车:

    看到上述界面表示tomcat-app1的基本安装配置已经成功。

    接下来复制 client的lib包cas-client-core-3.2.1.jar到 tomcat-app1webappsexamplesWEB-INFlib目录下, 在tomcat-app1webappsexamplesWEB-INFweb.xml 文件中增加如下内容:

    有关cas-client的web.xml修改的详细说明见官网介绍:

    https://wiki.jasig.org/display/CASC/Configuring+the+Jasig+CAS+Client+for+Java+in+the+web.xml

    6.3 安装配置 tomcat-app2

    解压apache-tomcat-6.0.29.tar.gz并重命名后的路径为 G:sso omcat-app2,修改tomcat的启动端口,在文件 conf/server.xml文件找到如下内容:

    启动tomcat-app2,浏览器输入 http://app2.micmiu.com:28080/examples/servlets/ 回车,按照上述6.2中的方法验证是否成功。

    同6.2中的复制 client的lib包cas-client-core-3.2.1.jar到 tomcat-app2webappsexamplesWEB-INFlib目录下, 在tomcat-app2webappsexamplesWEB-INFweb.xml 文件中增加如下内容:

    七、 测试验证SSO

    启动之前配置好的三个tomcat分别为:tomcat-cas、tomcat-app1、tomcat-app2.

    7.1  基本的测试

    预期流程: 打开app1 url —-> 跳转cas server 验证 —-> 显示app1的应用 —-> 打开app2 url —-> 显示app2应用 —-> 注销cas server —-> 打开app1/app2 url —-> 重新跳转到cas server 验证.

    打开浏览器地址栏中输入:http://app1.micmiu.com:18080/examples/servlets/servlet/HelloWorldExample,回车:

    跳转到验证页面:

    地址栏中输入:https://demo.micmiu.com:8443/cas/logout,回车显示:

    上述表示 认证注销成功,此时如果再访问 : http://app1.micmiu.com:18080/examples/servlets/servlet/HelloWorldExample 或 http://app2.micmiu.com:28080/examples/servlets/servlet/HelloWorldExample 需要重新进行认证。

    7.2  获取登录用户的信息

    修改类:webappsexamplesWEB-INFclassesHelloWorldExample.java 后重新编译并替换 webappsexamplesWEB-INFclassesHelloWorldExample.class文件。

     HelloWorldExample.java 修改后的代码如下:

    再进行上述测试显示结果如下:

    http://app1.micmiu.com:18080/examples/servlets/servlet/HelloWorldExample :

    http://app2.micmiu.com:28080/examples/servlets/servlet/HelloWorldExample

  • 相关阅读:
    JBoss+Ant实现EJB无状态会话bean实例
    Nginx简单介绍
    SVN版本号管理工具使用中常见的代码提交冲突问题的解决方法
    深入分析Java中的I/O类的特征及适用场合
    ZOJ 3689 Digging(贪心+dp)
    uva 10641 (来当雷锋的这回....)
    Java编程中“为了性能”尽量要做到的一些地方
    wikioi 1306 机智Trie树
    PE文件结构(三) 输入表
    初始化的数值(int、double等)(一)
  • 原文地址:https://www.cnblogs.com/chenglc/p/8744917.html
Copyright © 2011-2022 走看看