一:CAS服务器基础部署配置

一步下载官方提供的CAS部署工程对应版本Tomcat建议使用8.0以上版本)。解压后的CAS工程目录列表如下

https://github.com/apereo/casoverlaytemplate

第二步双击build.sh运行程序,会自动开始构建war包,构建完成后会在同级目录出现target文件夹进入文件夹目录如下

第三步:将cas.war拷贝tomcat目录/webapps/目录下,启动tomcatcas.war将会被自动解压出现下图所示表示启动成功

第四步:浏览器输入地址https://localhost:8443/cas/login,会弹出登录界面

第五步:输入初始用户名密码:casuser/Mellon登录成功表示基础部署完成

配置HTTPS

采用JDK自带keytool工具生成秘钥库

别名 java1234 存储路径 D:caskeystore

keytoolgenkeyvalias java1234 –keyalg RSA –keystore D:caskeystorejava1234.keystore

这里需要填写一些信息注意填写域名

秘钥库密码我们用 666666

执行完,会生成一个秘钥库文件

1.从密钥导出证书

DOS命令

keytoolexporttrustcacerts  –alias java1234 –file D:/cas/keystore/java1234.cer  –keystore D:/cas/keystore/java1234.keystore

输入一步密码即可生成证书: 

2.将证书导入到JDK证书

DOS命令

keytoolimporttrustcacertsalias java1234 –file D:/cas/keystore/java1234.cerkeystore “E:/jdk1.8/jre/lib/security/cacerts

密码口令changeit

3.Tomcat配置https支持

采用tomcat9

找到tomcat->conf->server.xml 打开文件

加下如下配置即可

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"

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

               clientAuth="false" sslProtocol="TLS" 

                keystoreFile="D:caskeystorejava1234.keystore"

                keystorePass="666666" />

启动bin下的startup.bat

默认中文乱码可以我们来到tomcat目录的conf子目录中,找到一个名为logging.properties” 的文件打开这个文本文件找到如下配置项:

java.util.logging.ConsoleHandler.encoding = UTF-8

将 UTF-8 修改为 GBK,修改后的效果为:

java.util.logging.ConsoleHandler.encoding = GBK

保存后,重启tomcat!) 

4.日志文件配置

5.配置host文件域名

修改内容:127.0.0.1   java1234.com

通过域名访问
https://java1234.com:8443/cas/login
用户名casuser  密码:Mellon

集成JeecgBoot

1:cas服务器端添加REST认证依赖 

 <dependency&gt;
  <groupId&gt;org.apereo.cas</groupId&gt;
  <artifactId>cas-server-support-rest-authentication</artifactId>
  <version>${cas.version}</version>
 </dependency>

2.配置application.properties文件

cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
#后端验证CAS登录用的接口
cas.authn.rest.uri=http://localhost:8080/fcsp/sso/user/login
#关闭CAS加密
cas.authn.rest.passwordEncoder.type=NONE
cas.authn.rest.passwordEncoder.characterEncoding=UTF-8
cas.authn.rest.passwordEncoder.encodingAlgorithm=MD5

 三:JeecgBoot前端配置

注:前端配置参考官方文档就行,新一点的版本默认都是配置好了,只需要配置好单点登录对接的地址然后开启就行

  四:JeecgBoot后端配置

1:配置好单点登录地址

2:实现登录接口验证这里放在项目中了,也可以单独部署一个

注:这里就是 cas.authn.rest.uri=http://localhost:8080/fcsp/sso/user/login  的验证

package org.jeecg.modules.sso.controller;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jeecg.common.util.PasswordUtil;
import org.jeecg.modules.sso.domain.SysUser;
import org.jeecg.modules.sso.mapper.SysSsoUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.Base64Utils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;


@RestController
@RequestMapping("/sso/user")
public class SysSsoUserController {
    private Logger logger = LogManager.getLogger(SysSsoUserController.class);

    @Autowired
    private SysSsoUserMapper sysUserMapper;

    @PostMapping("/login")
    public Object login(@RequestHeader HttpHeaders httpHeaders) {
        logger.info("Rest api login.");
        logger.debug("request headers: " + httpHeaders);
        SysUser user = null;
        try {
            UserTemp userTemp = obtainUserFormHeader(httpHeaders);
            //当没有 传递 参数的情况
            if(userTemp == null){
                return new ResponseEntity<SysUser>(HttpStatus.NOT_FOUND);
            }
            //尝试查找用户库是存在
            user = sysUserMapper.getSysUser(userTemp.username);
            //2. 校验用户名密码是否正确
            String userpassword = PasswordUtil.encrypt(userTemp.username, userTemp.password, user.getSalt());
            if (user != null) {
                if (!userpassword.equals(user.getPassword())) {
                    //密码匹配
                    return new ResponseEntity(HttpStatus.BAD_REQUEST);
                }
                if ("2".equals(user.getStatus())) {
                    //禁用 403
                    return new ResponseEntity(HttpStatus.FORBIDDEN);
                }
                if (user.isLocked()) {
                    //锁定 423
                    return new ResponseEntity(HttpStatus.LOCKED);
                }
                if (user.isExpired()) {
                    //过期 428
                    return new ResponseEntity(HttpStatus.PRECONDITION_REQUIRED);
                }
            } else {
                //不存在 404
                return new ResponseEntity(HttpStatus.NOT_FOUND);
            }
        } catch (UnsupportedEncodingException e) {
            logger.error("", e);
            new ResponseEntity(HttpStatus.BAD_REQUEST);
        }
        logger.info("[{" + user.getUsername() + "}] login is ok");
        //成功返回json
        Map<String, Object> attributes=new HashMap<>();
        attributes.put("username",user.getUsername());
        user.setAttributes(attributes);
        return user;
    }


}

认证完整代码Jeecg配置单点登录登录验证完整代码-Java文档类资源-CSDN下载

 shiro放行

 最后重启项目可以

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注