CAS 5.1.x 的搭建和使用(三)—— 通过官方示例来熟悉客户端搭建

CAS单点登录系列:

CAS 5.1.x 的搭建和使用(一)—— 通过Overlay搭建服务端

CAS 5.1.x 的搭建和使用(二)—— 通过Overlay搭建服务端-其它配置说明

CAS 5.1.x 的搭建和使用(三)—— 官方示例来熟悉客户端搭建

CAS 5.1.x 的搭建和使用(四)—— 配置使用HTTP协议访问的服务端

 

这里主要有两件事要做:

 

第一个就是给客户端的jre添加和服务端对应的证书

 

之前我们已经生成了一个keystore,我们就直接使用这个keystore生成一个证书,命令如下:

keytool -exportcert -alias cas -keystore D:/liuyx.keystore -file D:/liuyx.keystore.cer -storepass 123456

 

然后把这个证书导入jre的

CAS 5.1.x 的搭建和使用(三)—— 通过官方示例来熟悉客户端搭建_第1张图片

 

注意,这个jre一定要是你跑客户端的Tomcat的那个jre,

这里我的目录是:C:/Java/jdk1.8.0_91/jre/lib/security/cacerts,刚刚导出的证书的目录是D:/liuyx.keystore.cer

那么我的命令就是:

keytool -import -alias cas -keystore C:/Java/jdk1.8.0_91/jre/lib/security/cacerts -file D:/liuyx.keystore.cer

证书库的密码是:changeit

导入完我们可以看一下导入的结果:

keytool -list -keystore C:/Java/jdk1.8.0_91/jre/lib/security/cacerts

密码同上,可以看到一堆证书,其中有一个“别名”是cas的,日期是今天,就是我们刚刚导进去的。

 

当我们做完这一切CAS实验后,也许你会想要删掉这个证书,可以使用这个命令:

keytool -delete -alias cas -keystore  C:/Java/jdk1.8.0_91/jre/lib/security/cacerts

 

 

接下来就是跑官网的示例了

官网例子地址:

https://github.com/cas-projects/cas-sample-java-webapp

我们先把它下下来,结构如下

CAS 5.1.x 的搭建和使用(三)—— 通过官方示例来熟悉客户端搭建_第2张图片

可以看到里面内置了jetty,不过我是通过idea中的Tomcat运行的,我把它导入了idea。

 

然后就是我们的正题了,配置修改:

1、pom.xml

在pom里面加上以下内容:

        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-apiartifactId>
            <version>1.7.25version>
        dependency>

        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-log4j12artifactId>
            <version>1.7.25version>
        dependency>

 

2、web.xml

xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    
    <filter>
        <filter-name>CAS Single Sign Out Filterfilter-name>
        <filter-class>org.jasig.cas.client.session.SingleSignOutFilterfilter-class>
        <init-param>
            <param-name>casServerUrlPrefixparam-name>
            
            <param-value>https://cas.example.org:8443param-value>
        init-param>
    filter>

    <listener>
        <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListenerlistener-class>
    listener>

    
    <filter>
        <filter-name>CAS Authentication Filterfilter-name>
        <filter-class>org.jasig.cas.client.authentication.AuthenticationFilterfilter-class>
        <init-param>
            <param-name>casServerLoginUrlparam-name>
            
            <param-value>https://cas.example.org:8443/loginparam-value>
        init-param>
        <init-param>
            <param-name>serverNameparam-name>
            
            <param-value>http://localhost:8080param-value>
        init-param>
    filter>

    
    <filter>
        <filter-name>CAS Validation Filterfilter-name>
        <filter-class>org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilterfilter-class>
        <init-param>
            <param-name>casServerUrlPrefixparam-name>
            
            <param-value>https://cas.example.org:8443param-value>
        init-param>
        <init-param>
            <param-name>serverNameparam-name>
            
            <param-value>http://localhost:8080param-value>
        init-param>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>UTF-8param-value>
        init-param>
        <init-param>
            <param-name>redirectAfterValidationparam-name>
            <param-value>trueparam-value>
        init-param>
        <init-param>
            <param-name>useSessionparam-name>
            <param-value>trueparam-value>
        init-param>
        <init-param>
            <param-name>authn_methodparam-name>
            <param-value>mfa-duoparam-value>
        init-param>
    filter>

    
    <filter>
        <filter-name>CAS HttpServletRequest Wrapper Filterfilter-name>
        <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilterfilter-class>
    filter>

    <filter-mapping>
        <filter-name>CAS Single Sign Out Filterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>

    <filter-mapping>
        <filter-name>CAS Validation Filterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>

    <filter-mapping>
        <filter-name>CAS Authentication Filterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>

    <filter-mapping>
        <filter-name>CAS HttpServletRequest Wrapper Filterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>

    <welcome-file-list>
        <welcome-file>
            index.jsp
        welcome-file>
    welcome-file-list>
web-app>

 

总共四个过滤器和一个监听器,大部分都在文件内容中注释说明了,自己看一下吧。

 

客户端应用跑起来,会先跳转到CAS服务器登录页,登录成功后会跳转到首页index.jsp,里面就是获取了所有你可以从CAS服务器获取的属性,如果你前面没有配置多属性获取,那么只有一个默认的id,和一些其他cas自带的属性。

 

关于如何在代码里获得这些属性,这个index.jsp 的代码里已经写的非常清楚了,自己去看一下即可。

 

最后建议大家做完这些之后自己打开谷歌浏览器的F12,勾选上Preserve log

CAS 5.1.x 的搭建和使用(三)—— 通过官方示例来熟悉客户端搭建_第3张图片

 

通过正常的登陆来看一下页面跳转流程,结合下边这个地址,弄明白TGC、TGT、ST三个概念:

http://www.cnblogs.com/flying607/p/5626088.html

转载于:https://www.cnblogs.com/flying607/p/7601177.html

你可能感兴趣的:(CAS 5.1.x 的搭建和使用(三)—— 通过官方示例来熟悉客户端搭建)