cas单点登录-服务端部署

这篇具有很好参考价值的文章主要介绍了cas单点登录-服务端部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.需求描述

公司开发系统越来越多,每个系统都有自己的登录认证流程,给用户很繁琐的体验,统一认证单点登录迫在眉睫

二.流程图

cas单点登录-服务端部署

三.本地运行cas服务端

1.拉取cas服务端代码,切换到对应分支(我使用的是6.4.x)

https://github.com/apereo/cas-overlay-template

 2.由于6.4版本默认jdk11以上,所以在idea进行如下配置

cas单点登录-服务端部署

3.在build.gradle文件加入mysql、jdbc依赖配置,并下载依赖

cas单点登录-服务端部署

implementation "org.apereo.cas:cas-server-support-json-service-registry:${project.'cas.version'}"
implementation "org.apereo.cas:cas-server-support-jdbc:${project.'cas.version'}"
implementation "org.apereo.cas:cas-server-support-jdbc-drivers:${project.'cas.version'}"
implementation "mysql:mysql-connector-java:5.1.46"

 cas单点登录-服务端部署

 4.yml配置数据源以及http请求支持

cas:
  authn:
    jdbc:
      query[0]:
        sql: SELECT * FROM user WHERE username = ?
        url: jdbc:mysql://xxxxxx:3306/cas?useUnicode=true&characterEncoding=utf8&useSSL=false
        user: root
        password: xxxx
        fieldPassword: password
        driverClass: com.mysql.jdbc.Driver
        password-encoder:
          type: DEFAULT
          encoding-algorithm: MD5
          character-encoding: UTF-8
        fieldExpired: expired #是否提示改密码的字段
        fieldDisabled: disabled #是否禁用用户的字段
    accept:
      enabled: false
  tgc:
    secure: false
  service-registry:
    core:
      init-from-json: true
    json:
      location: file:/etc/cas/services
#cas.authn.accept 指定的就是默认登录用户casuser, 密码Mellon,enabled设为false,则默认用户便不能登录
#如果 cas.authn.jdbc.query[0].password-encoder.type设为NONE,则不适用密码加密,数据库中需存明文密码

 5.在jdk的bin目录生成证书thekeystore

keytool -genkeypair(keytool -genkeypair)来生成对应的keystore

 6.在项目对应的盘根目录创建对应子目录(etc/cas/service),把证书和json文件放进对应的位置

cas单点登录-服务端部署

cas单点登录-服务端部署

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

 7.mysql创建数据库和对应的表,并插入数据

CREATE TABLE `cas` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL COMMENT '用户名',
  `password` varchar(255) DEFAULT NULL COMMENT '密码',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

由于cas对密码经过md5加密的,所以密码需要处理后再插入

cas单点登录-服务端部署

8.运行启动cas 

cas单点登录-服务端部署

四. docker-compose部署cas服务

1. 将项目上传到linux服务器,通过命令生成对应的镜像

docker build -t cas.tar:6.4 .

2.编写docker-compose.yml

version: "3"
services:
  cas:
    image: cas:6.4
    container_name: cas-server
    restart: always
    ports:
      - 8083:8080
      - 8443:8443
    volumes:
      - ./conf/cas.properties:/etc/cas/config/cas.properties:ro
      - ./conf/thekeystore:/etc/cas/thekeystore:ro
      - ./conf/HTTPSandHTTP-10000001.json:/etc/cas/services/HTTPSandHTTP-10000001.json:ro

3.编写cas.properties

as.server.name=https://自己的域名:8443
cas.server.prefix=${cas.server.name}/cas

logging.config=file:/etc/cas/config/log4j2.xml

cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
cas.serviceRegistry.json.location=file:/etc/cas/services

4.启动并访问

cas单点登录-服务端部署

 文章来源地址https://www.toymoban.com/news/detail-473079.html

到了这里,关于cas单点登录-服务端部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包