zoukankan      html  css  js  c++  java
  • CAS客户端和服务器配置https证书

    关于如何生成https证书可以看这篇文章:

    java生成Https证书,及证书导入的步骤和过程

     下面整理cas如何整合https:

    cas服务器端部署(TLS[https])

    1.生成证书:

    参照java生成Https证书,及证书导入的步骤和过程

    导出该证书,是为了给客户端使用。

    2.修改服务器端的 127.0.0.1为域名

    修改域名的文件在:C:WINDOWSsystem32driversetc hosts

    以下是一个example,这里我们修改域名为【sso.wsria.com】:

    127.0.0.1       sso.wsria.com

    3.修改casWEB-INFdeployerConfigContext.xml

    修改dataSource标签,配置数据源。

    注:本例中我们是以oracle为例,lib中也只有oracle的驱动,如果想配置其他数据库,不但需要配置该数据源还需要把相应的驱动jar包放到lib中。

    客户端配置(TLS[https])

    1.修改客户端的 127.0.0.1 为域名,修改方式与服务器端一致,但是域名不能与服务器端相同,因为服务器端为sso.wsria.com,那么我们配置本地的域名为sso.wsria.cn。

    2.导入证书

    该证书指的是,刚刚从服务器段导出的证书。

    没有特殊要求的话,一般将该证书导入到 系统环境变量中 指定的jdk中,如果Tomcat指定了jdk,那么将证书导入到指定的jdk中。

    keytool -import -keystore C:Javajdk1.5.0_22jrelibsecuritycacerts -file D:signleLoginwsria.crt -alias wsria

    注:C:Javajdk1.5.0_22jrelibsecuritycacerts 路径包含空格的话,需要用””包起来,即:

    C:Program FilesJavajdk1.5.0_22jrelibsecuritycacerts

    “C:Program FilesJavajdk1.5.0_22jrelibsecuritycacerts”

    3.修改客户端tomcat/conf/server.xml

    增加1个标签:

    <Connector port="8453" protocol="HTTP/1.1" SSLEnabled="true"

                   maxThreads="150" scheme="https" secure="true"

                   clientAuth="false" sslProtocol="TLS"

           keystoreFile="E:/signleLogin/wsriakey"

           keystorePass="changeit"/>

    这里:keystoreFile="E:/signleLogin/wsriakey" 指向本地证书的物理位置

    4.修改客户端tomcat/conf/web.xml

    <login-config>
    <!-- Authorization setting for SSL -->
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Client Cert Users-only Area</realm-name>
    </login-config>
    <security-constraint>
    <!-- Authorization setting for SSL -->
    <web-resource-collection >
    <web-resource-name >SSL</web-resource-name>
    <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
    </security-constraint>

    http自动跳转转https

    5.在Tomcat项目中修改WEB-INF/web.xml中https的链接

    <!-- ========================单点登录开始 ======================== -->
    <!--用于单点退出,该过滤器用于实现单点登出功能,可选配置 -->
    <listener>
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
    </listener>
    <!--该过滤器用于实现单点登出功能,可选配置。 -->
    <filter>
    <filter-name>CAS Single Sign OutFilter</filter-name>
    <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>CAS Single Sign OutFilter</filter-name>
    <url-pattern>/web/*</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://portal.szlh.gov.cn/cas/login</param-value>
    </init-param>
    <init-param>
    <param-name>serverName</param-name>
    <param-value>https://localhost.szlh.gov.cn</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>CAS Filter</filter-name>
    <url-pattern>/web/*</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://portal.szlh.gov.cn/cas</param-value>
    </init-param>
    <init-param>
    <param-name>serverName</param-name>
    <param-value>https://localhost.szlh.gov.cn</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>CAS Validation Filter</filter-name>
    <url-pattern>/web/*</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>/web/*</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>/web/*</url-pattern>
    </filter-mapping>
    <!-- ========================单点登录结束 ======================== -->

    完~

     

       

  • 相关阅读:
    7月15日考试 题解(链表+状压DP+思维题)
    暑假集训日记
    C# .NET 使用 NPOI 生成 .xlsx 格式 Excel
    JavaSE 基础 第42节 局部内部类
    JavaSE 基础 第41节 匿名内部类
    JavaSE 基础 第40节 内部类概述
    JavaSE 基础 第39节 接口的应用
    JavaSE 基础 第38节 接口的实现
    JavaSE 基础 第37节 接口概述
    JavaSE 基础 第36节 抽象类概述与使用
  • 原文地址:https://www.cnblogs.com/fron/p/cas-https-20170111.html
Copyright © 2011-2022 走看看