zoukankan      html  css  js  c++  java
  • 基于CAS的单点登录SSO[4]: 加入两个CAS客户端测试单点登录

    参考:https://blog.csdn.net/gobitan/article/details/77689819

    摘要:本系列的前三篇文章分别搭建了基于CAS的单点登录服务器,并让服务器支持MySQL存储用户名和密码,以及让Redis缓存用户认证信息。本文将采用CAS官方提供的基于传统WAR工程的CAS客户端样例来做单点登录测试。

    环境概述
    10.191.30.30 cas.example.org #CAS服务器
    10.191.30.31 casclient1.example.org #CAS客户端1
    10.191.30.32 casclient2.example.org #CAS客户端2
    10.191.13.98 浏览器所在主机

    部署CAS客户端1主机
    第一步:获取CAS客户端部署包
    git clone https://github.com/cas-projects/cas-sample-java-webapp

    第二步:配置域名
    在/etc/hosts中增加如下配置:
    10.191.30.30 cas.example.org
    10.191.30.31 casclient1.example.org
    10.191.30.32 casclient2.example.org
    配置cas-sample-java-webapp/src/main/webapp/WEB-INF/web.xml
    将所有8443前面默认的mmoayyed.unicon.net替换为:cas.example.org
    将所有9443前面默认的mmoayyed.unicon.net替换为:casclient1.example.org

    第三步:创建客户端证书
    mkdir -p /etc/cas/jetty
    export DNAME="${DNAME:-CN=casclient1.example.org,OU=Example,OU=Org,C=US}"
    sudo keytool -genkey -alias client -keyalg RSA -keypass changeit -storepass changeit -keystore /etc/cas/jetty/thekeystore -dname ${DNAME}
    sudo keytool -exportcert -alias client -storepass changeit -keystore /etc/cas/jetty/thekeystore -file /etc/cas/jetty/client.cer

    第四步:导入服务器端证书
    先将服务器端生成的/etc/cas/cas.cer下载到本地的当前目录,然后执行如下命令:
    sudo keytool -import -trustcacerts -alias cas -keystore $JAVA_HOME/jre/lib/security/cacerts -file cas.cer -storepass changeit
    提示是否要信任该证书时,输入”是”。
    注意:经测试,官方提示导入证书的位置不对。

    如果要清除刚导入的证书,执行如下命令:
    sudo keytool -delete -alias cas -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit

    第五步:运行CAS客户端
    sudo mvn clean package jetty:run-forked

    部署CAS客户端2主机
    所有步骤与”部署CAS客户端1主机”的操作一样,把对应的casclient1.example.org替换为casclient2.example.org即可。

    配置浏览器所在的主机
    在/etc/hosts中增加如下配置: 
    10.191.30.30 cas.example.org
    10.191.30.31 casclient1.example.org
    10.191.30.32 casclient2.example.org

    测试CAS客户端与服务器的集成情况
    第一步:先访问CAS客户端1:https://casclient1.example.org:9443/sample,系统会跳转到https://cas.example.org:8443/cas/login,然后提示登录,输入用户名casuser和密码Mellon之后,系统回到https://casclient1.example.org:9443/sample/页面。登录成功。
    第二步:再访问CAS客户端2:https://casclient2.example.org:9443/sample,这时不再需要登录。

    重复上面的步骤,做另外一个客户端CAS2。需要修改的地方包括:
    [1] /etc/hosts
    [2] cas-sample-java-webapp/src/main/webapp/WEB-INF/web.xml
    [3] 创建证书(貌似可以不改)

    常见错误及解决办法:
    [1] No subject alternative DNS name matching
    错误详情:javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching cas.example.org found.
    错误原因:原因是服务器端创建证书的时候dname和SAN中的域名不匹配。
    解决办法:需在cas-overlay-template的build.sh中将两者改为一样,举例如下:
    DNAME="${DNAME:-CN=cas.example.org,OU=Example,OU=Org,C=US}”
    CERT_SUBJ_ALT_NAMES="${CERT_SUBJ_ALT_NAMES:-dns:cas.example.org,dns:localhost,ip:127.0.0.1}"

    [2] unable to find valid certification path to requested target
    错误详情:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    错误原因:未将CAS服务器端的证书纳入到CAS客户端的Java keystore信任库中。
    解决办法:现将服务器端的cas.cer下载下来,放在当前目录,然后执行如下命令,并在提示的时候输入”是”。如果是英文提示,需要输入”yes”。
    sudo keytool -import -trustcacerts -alias cas -keystore $JAVA_HOME/jre/lib/security/cacerts -file cas.cer  -storepass changeit

  • 相关阅读:
    pycharm中启动Django方法
    Python ——selenium报错 'chromedriver.exe' executable needs to be in PATH
    软件测试
    C#&.Net干货分享- 构建PrinterHelper直接调用打印机相关操作
    C#&.Net干货分享- iTextSharp导出数据源到PDF
    C#&.Net干货分享-构建Aocr_ImageHelper读取图片文字做解析
    C#&.Net干货分享-构建后台自动定时任务的源码
    SQL Server清理数据库日志的脚本-干货
    SQL Server通过函数把逗号分隔的字符串拆分成数据列表的脚本-干货
    SQL Server通过定义函数返回字段数据列表模板-干货
  • 原文地址:https://www.cnblogs.com/js1314/p/12955747.html
Copyright © 2011-2022 走看看