作者:蓝雄威,叩丁狼教育高级讲师。原创文章,转载请注明出处。
一、什么是什么是CAS
CAS(Central Authentication Service) 是 Yale (耶鲁)大学发起的开源的企业级单点登录系统。它的特点:
- Java (Spring Webflow/Spring Boot) 服务组件
- 可插拔身份验证支持(LDAP,Database,X.509,MFA)
- 支持多种协议(CAS,SAML,OAuth,OpenID,OIDC)
- 跨平台客户端支持(Java,.Net,PHP,Perl,Apache等)
- 与uPortal,Liferay,BlueSocket,Moodle,Google Apps等集成
分为CAS Server服务端和CAS Client客户端:
CAS Server:
CAS Server 负责完成对用户的认证工作, CAS Server 需要独立部署,有不止一种 CAS Server 的实现, Yale CAS Server 和 ESUP CAS Server 都是很不错的选择。
CAS Server 会处理用户名 / 密码等凭证 (Credentials) ,它可能会到数据库检索一条用户帐号信息,也可能在 XML 文件中检索用户密码,对这种方式, CAS 均提供一种灵活但同一的接口 / 实现分离的方式, CAS 究竟是用何种认证方式,跟 CAS 协议是分离的,也就是,这个认证的实现细节可以自己定制和扩展.
CAS Client:
CAS Client 负责部署在客户端(注意,我是指 Web 应用),原则上, CAS Client 的部署意味着,当有对本地 Web 应用的受保护资源的访问请求,并且需要对请求方进行身份认证, Web 应用不再接受任何的用户名密码等类似的 Credentials ,而是重定向到 CAS Server进行认证。
目前, CAS Client 支持(某些在完善中)非常多的客户端,包括 Java 、 .Net 、 ISAPI 、 Php 、 Perl 、 uPortal 、 Acegi 、 Ruby 、VBScript 等客户端,几乎可以这样说, CAS 协议能够适合任何语言编写的客户端应用。
二、https的配置
为了提高安全性,要求和CAS服务器的所有通信必须发生在一个安全的通道.所以服务端的数据传输需要使用https协议.
https能做什么同学们可以百度一下,在此就不做过多延伸.
步骤如下:
1.生成服务器的密匙文件wolfcode.keystore
keytool -genkey -alias wolfcode -keyalg RSA -keysize 2048 -validity 36500 -keystore D:/keys/wolfcode.keystore
参数说明:
- genkey 生成密钥
- keyalg 指定密钥算法,这时指定RSA,
- keysize 指定密钥长度,默认是1024位,这里指定2048,长一点,比较难破解,
- validity 指定证书有效期,这里指定36500天.
- alias 指定别名,这里是wolfcode
- keystore 指定密钥库存储位置,这里存在 D:/keys/目录下
注意:您的名字与姓氏www.sso.com
是CAS服务器使用的域名,不是随便乱定的,其他的随意.
2.导出证书:
keytool -export -alias wolfcode -storepass 123456 -file D:/keys/wolfcode.cer -keystore D:/keys/wolfcode.keystore
参数说明:
- alias指定别名为wolfcode ;
- storepass指定私钥为123456;
- file指定导出证书的文件名为wolfcode.cer;
- keystore指定之前生成的密钥文件的文件名。
注意:-alias
和-storepass
必须为生成wolfcode .keystore
密钥文件时所指定的别名和密码,否则证书导出失败.
3.导入证书导入到jdk信任库
keytool -import -alias wolfcode -keystore C:/"Program Files"/Java/jdk1.8.0_144/jre/lib/security/cacerts -file D:/keys/wolfcode.cer -trustcacerts
注意:
1.原来的$JAVA_HOME/jre/lib/security/cacerts
文件要先删掉,否则会报出java.io.IOException: Keystore was tampered with, or password was incorrect
错误.
2.如果路径有空格或特殊字符,像我上面一样加上引号.
如果到这步都没问题,说明https配置好了.接下来就搭建CAS Server服务端
�