ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CAS5.3单点服务-登录验证直接调用外部接口

2021-12-09 12:35:49  阅读:217  来源: 互联网

标签:jdbc 单点 cas 接口 CAS5.3 authn query passwordEncoder 加密


关于CAS的基本使用请直接看上篇文章:CAS5.3版本单点登录服务器(支持http协议)的搭建以及连接数据库的设置 

其实CAS有自己的验证接口,并且提供参数,只需要修改参数就可以调整验证用户密码的加密方式。

##
# CAS Authentication Credentials
# 默认的用户名和密码
#
cas.authn.accept.users=admin::123456
#忽略https安全协议,使用 HTTP 协议
cas.tgc.secure=false
#是否开启json识别功能,默认为false
cas.serviceRegistry.initFromJson=true
#你自己的数据库
cas.authn.jdbc.query[0].url=jdbc:mysql://127.0.0.1:3306/cloud2?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
#数据库的登录用户名
cas.authn.jdbc.query[0].user=root
#数据库的登录密码
cas.authn.jdbc.query[0].password=root
#查询的表和条件的sql
cas.authn.jdbc.query[0].sql=select * from sys_user where username=?
#密码在表中对应的字段
cas.authn.jdbc.query[0].fieldPassword=password
cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Driver
# 默认加密策略,通过encodingAlgorithm来指定算法,默认NONE不加密 如果你的系统是加密的 那么就必须配置以下内容 不然无法登陆 #cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT # 加密盐 #cas.authn.jdbc.query[0].passwordEncoder.secret=RCGTeGiH # 加密字符长度 #cas.authn.jdbc.query[0].passwordEncoder.strength=16 # 字符类型 #cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8 # 加密算法 #cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5 # NONE|DEFAULT|STANDARD|BCRYPT|SCRYPT|PBKDF2 #cas.authn.jdbc.query[0].passwordEncoder.type=NONE

可能是我个人对于文档理解的不够透彻,当用户密码按照一定的简单规则进行加密时,直接修改参数是没有问题的。

然后我先说一下我现在的加密方式,也是使用MD5加盐值进行加密,但是我的每个用户名的盐值是不同的,如果盐值固定,按照上边的参数介绍,直接配置MD5加密方式,再配置上盐值,也没问题,现在的情况是盐值不是固定的,这时候貌似就不太行了。

至少我不知道该怎么做了,于是又参考了一些文档,发现原来CAS的验证是直接能够调用外部接口的,代码如下:

##
# REST 认证开始, 请求远程调用接口(NONE不进行加密)
#
cas.authn.rest.uri=http://localhost:8448/cas-db/cas/user/login
cas.authn.rest.passwordEncoder.type=NONE
cas.authn.rest.passwordEncoder.characterEncoding=UTF-8
cas.authn.rest.passwordEncoder.encodingAlgorithm=MD5

##
# 开启json服务注册
#
cas.serviceRegistry.initFromJson=true
##
# Json配置
#cas.serviceRegistry.json.location=classpath:/services

#30秒扫描一遍
#cas.serviceRegistry.schedule.repeatInterval=30000

##
# 登出后允许跳转到指定页面
#
cas.logout.followServiceRedirects=true

# ticket过期设置
cas.ticket.st.numberOfUses=1
cas.ticket.st.timeToKillInSeconds=60
#cas.theme.defaultThemeName=app1
代码块中的接口http://localhost:8448/cas-db/cas/user/login,就是我们自己写的外部接口,其实就是没有配置CAS时的登录验证方式,这时候就完美解决了我的问题。
大佬还请指教。
具体原理还在研究中,待续......

标签:jdbc,单点,cas,接口,CAS5.3,authn,query,passwordEncoder,加密
来源: https://www.cnblogs.com/qcq0703/p/15666544.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有