• 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>
    <!-- ========================单点登录结束 ======================== -->

    完~

     

       

  • 相关阅读:
    比较对象的相对性
    深拷贝与浅拷贝(TBD)
    创建UI的线程才能访问UI,那么怎样才算访问UI呢
    多层级的数据绑定效果
    众所周知,static修饰的成员只实例化一次,而string类型每次赋值都会重新创建一个实例,那么用static修饰string呢?
    常量、只读字段
    使用dos打开相关软件
    查看电脑硬件信息dos命令
    Windows常用快捷键
    使用外部编辑器出现乱码
  • 原文地址:https://www.cnblogs.com/fron/p/cas-https-20170111.html
Copyright © 2020-2023  润新知