CAS服务端入门使用实践

CAS服务端入门使用实践

一、前言

1.简介

CAS 是一个企业多语言单点登录解决方案,支持大量附加身份验证协议和功能,满足身份验证和授权需求的综合平台。

2.环境

  • Windows 10
  • JDK 1.8
  • git version 2.41.0.windows.3
  • Tomcat 9.0.78
  • Maven 3.5.3
  • cas-overlay-template-5.3

CAS Home:https://apereo.github.io/cas

cas-overlay-template - GitHub:https://github.com/apereo/cas-overlay-template/tree/5.3

REST-Protocol:https://apereo.github.io/cas/development/protocol/REST-Protocol.html

Tomcat 9:https://tomcat.apache.org/download-90.cgi

Anumbrella - CAS 专栏:https://blog.csdn.net/anumbrella/category_7765386.html

Shuyun123 - GitHub:https://github.com/Shuyun123/CAS

二、使用实践

1.编译项目

第一种编译:

  • 使用 Git 命令窗口

  • 右击 - Open Git Bash here

./build.sh package

第二种编译:

  • CMD 窗口
build.cmd package
  • CAS 编译后的目录:cas-overlay-template-5.3\target\cas

2.部署项目

在这里插入图片描述

  • 注意:JDK 版本是1.8

  • 启动 Tomcat:双击 apache-tomcat-9.0.78\bin\startup.bat

  • 浏览器访问:http://127.0.0.1:8080/cas

  • 默认账号密码:casuser::Mellon

  • 默认账号密码配置文件:

    cas-overlay-template-5.3\target\cas\WEB-INF\classes\application.properties

在这里插入图片描述

3.配置HTTPS

  • 登录页面的黄色背景提示内容:
非安全连接
您当前正在通过非安全连接访问 CAS。单点登录不起作用。为了进行单点登录,您必须通过 HTTPS 登录。
1)生成密钥
  • JDK 的 bin 目录下执行

  • 记住密码,导出证书需要使用

  • 您的名字与姓氏是什么,填写域名,例如:test.org

keytool -genkey -alias mycacerts -keyalg RSA -keystore  D:/ssh-key/keycard

在这里插入图片描述

2)导出证书
  • JDK 的 bin 文件夹下执行
keytool -export -file D://ssh-key/keycard.crt -alias mycacerts -keystore D:/ssh-key/keycard
3)Tomcat配置HTTPS
  • 编辑 apache-tomcat-9.0.78\conf\server.xml

  • 新增 8443 端口的 HTTPS 配置

  • 修改具体的密钥路径和密钥库口令(与生成密钥时相同)

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true"
               maxParameterCount="1000"
			   scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"
			   keystoreFile="D:/ssh-key/keycard"   
			   keystorePass="123456"
               >
</Connector>
4)配置 hosts 文件
  • 编辑 C:\Windows\System32\drivers\etc\hosts
  • 与生成密钥时相同
127.0.0.1 test.org
5)测试
  • 关闭科学上网软件(无则忽略)

  • 浏览器访问:https://test.org:8443/cas

在这里插入图片描述

4.未认证授权的服务

  • 客户端跳转提示:
未认证授权的服务
CAS的服务记录是空的,没有定义服务。 希望通过CAS进行认证的应用程序必须在服务记录中明确定义。

(1)编辑 cas\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json

  • 加入 http 的支持
{
  "@class" : "org.apereo.cas.services.RegexRegisteredService",
  "serviceId" : "^(https|imaps|http)://.*",
  "name" : "HTTPS and IMAPS",
  "id" : 10000001,
  "description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.",
  "evaluationOrder" : 10000
}

(2)编辑 cas\WEB-INF\classes\application.properties

#是否开启json识别功能,默认为false
cas.serviceRegistry.initFromJson=true
#忽略https安全协议,使用 HTTP 协议
cas.tgc.secure=false

5.二次开发

1)登录认证方式
认证方式依赖包
白名单cas-server-support-generic
黑名单
JDBC 认证
Shiro 认证cas-server-support-shiro-authentication
Rest 认证cas-server-support-rest-authentication
自定义登录认证cas-server-core-authentication-api
cas-server-core-configuration-api
2)修改CAS服务端登录界面

(1)隐藏头部和底部

  • 编辑:cas\WEB-INF\classes\templates\layout.html
<body>
<!-- <div th:replace="fragments/header :: header">
    <a href="fragments/header.html">Header</a> fragment will go here
</div> -->

<main role="main" class="container mt-3 mb-3">
    <div layout:fragment="content" id="content">
        CAS content will go here
    </div>
</main>

<!-- <div th:replace="fragments/footer :: footer">
    <a href="fragments/footer.html">Footer</a> fragment will go here
</div> -->

<script th:replace="fragments/scripts"/>
</body>

(2)隐藏右侧 Links to CAS Resources

  • 编辑:cas\WEB-INF\classes\templates\casLoginView.html
<body class="login">
<main role="main" class="container mt-3 mb-3">
    <div layout:fragment="content" class="row">
        <div class="col-md">
            <div th:replace="fragments/loginform :: loginform"><a href="fragments/loginform.html">Login Form goes
                here</a></div>
        </div>
        <div id="notices" class="col-md mt-3 mt-md-0">
            <!-- <div th:replace="fragments/insecure :: insecure"><a href="fragments/insecure.html">insecure alert goes
                here</a></div>
            <div th:replace="fragments/defaultauthn :: staticAuthentication">
                <a href="fragments/defaultauthn.html">defaultAuthn</a>
                fragment
            </div>
            <div th:replace="fragments/cookies :: cookiesDisabled"><a href="fragments/cookies.html">cookies</a> fragment
            </div>
            <div th:replace="fragments/serviceui :: serviceUI"><a href="fragments/serviceui.html">service ui</a> fragment</div>
            <div th:replace="fragments/loginProviders :: loginProviders"><a href="fragments/loginProviders.html">loginProviders</a>
                fragment
            </div>
            <div th:replace="fragments/cas-resources-list :: cas-resource-list">
                <a href="fragments/cas-resources-list.html">cas-resource</a> list fragment
            </div> -->
        </div>
    </div>
</main>
</body>

(3)隐藏登录按钮下的提示

  • 编辑:cas\WEB-INF\classes\templates\fragments\loginform.html
<!-- <div th:replace="fragments/loginsidebar :: loginsidebar" /> -->

(4)登录界面左侧显示图片

  • 拷贝图片到文件夹:cas\WEB-INF\classes\static\images

  • 编辑:cas\WEB-INF\classes\static\css\cas.css

#notices {
  border-color: #008;
  color: #008;
  background-image: url(../images/login_img.png);
}

(5)更换浏览器标签页图标

  • 替换图片文件:cas\WEB-INF\classes\static\favicon.ico
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

趴着喝可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值