第一步:下载官方提供的CAS部署工程和对应版本Tomcat(建议使用8.0以上版本)。解压后的CAS工程目录列表如下
https://github.com/apereo/cas–overlay–template
第二步:双击build.sh运行程序,会自动开始构建war包,构建完成后会在同级目录出现target文件夹,进入文件夹目录如下
第三步:将cas.war包拷贝到tomcat目录/webapps/目录下,启动tomcat,cas.war将会被自动解压。出现下图所示,表示启动成功。
第四步:浏览器输入地址:https://localhost:8443/cas/login,会弹出登录界面。
第五步:输入初始用户名和密码:casuser/Mellon,登录成功,表示基础部署完成
二:配置HTTPS
别名 java1234 存储路径 D:caskeystore
keytool –genkey –v –alias java1234 –keyalg RSA –keystore D:caskeystorejava1234.keystore
DOS命令:
keytool –export –trustcacerts –alias java1234 –file D:/cas/keystore/java1234.cer –keystore D:/cas/keystore/java1234.keystore
DOS命令:
keytool –import –trustcacerts –alias java1234 –file D:/cas/keystore/java1234.cer –keystore “E:/jdk1.8/jre/lib/security/cacerts“
找到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" />
(默认有中文乱码,可以我们来到tomcat目录的conf子目录中,找到一个名为 “logging.properties” 的文件,打开这个文本文件,找到如下配置项:
java.util.logging.ConsoleHandler.encoding = UTF-8
java.util.logging.ConsoleHandler.encoding = GBK
通过域名访问:
https://java1234.com:8443/cas/login
用户名:casuser 密码:Mellon
<dependency>
<groupId>org.apereo.cas</groupId>
<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
注:前端配置参考官方文档就行,新一点的版本默认都是配置好了,只需要配置好单点登录对接的地址然后开启就行
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放行
原文地址:https://blog.csdn.net/qq6642154166/article/details/127645196
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_50237.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!