在多服务统一账号的应用集中,单点登陆是必不可少的。CAS就是成熟的单点登陆框架之一。Github地址 https://github.com/apereo/cas。如今咱们就经过一系列快速简单的构建方式实现一个简单的单点登陆系统集。java
apereo提供了一个基于层结构的框架,能够帮助开发者快速引入cas server的代码,而后实现自由配置或代码覆盖,打包方式也很是简单。Github地址https://github.com/apereo/cas...。git
mvn install
。执行时间较长,需耐心等待。执行结束后,该项目中会出现overlays目录,里面就是cas server的配置文件和class代码。mvn install
执行后会在项目的target目录下生成一个cas.war包,将该war包放在apache tomcat的webapps/
目录下并启动tomcat后,就能经过浏览器访问,访问地址 localhost:8080/cas
。修改默认配置的方式:github
- 在项目中添加
src/main/java
和src/main/resources
目录,并将src/main/java
设置为代码文件根目录,将src/main/resources
设置为资源文件根目录。例如要修改默认的登陆用户名和密码(默认为casuser/Mellon),只须要将overlays目录下的WEB-INF/classes/
目录中的application.properties
文件复制到src/main/resources
中,并修改最后一行配置cas.authn.accept.users=casuser::Mellon
为cas.authn.accept.users=test::demo
便可,让后从新执行mvn install
并从新部署target/cas.war
包便可验证。- overlays中的
WEB-INF/classes/
目录下的全部文件都可被覆盖,只须要将该目录下的文件复制到src/main/resources
中,而后修改后从新打包部署,便可。
application.properties
中配置的(casuser::Mellon),正式环境下须要经过链接数据库进行校验,添加数据库验证的教程 https://apereo.github.io/2017...。集成CAS客户端其实是为应用添加多个Filter。以SpringBoot的应用为例,能够采用自动注解的方式添加过滤器。这里咱们使用了cas-client-autoconfig-support
项目的集成能力,Github地址https://github.com/Unicon/cas...。web
在SpringBoot应用的Maven配置文件(pom.xml
)中添加依赖:数据库
<dependency> <groupId>net.unicon.cas</groupId> <artifactId>cas-client-autoconfig-support</artifactId> <version>1.5.0-GA</version> </dependency>
在应用启动入口类上添加配置@EnableCasClient
,示例:apache
@SpringBootApplication @EnableCasClient public class MyApplication { .. }
在应用的配置文件中(application.properties
)添加以下配置:json
cas.server-url-prefix=https://casserver.com/cas # 填CAS服务器的前缀 cas.server-login-url=https://casserver.com/cas/login # 填CAS服务器的登陆地址 cas.client-host-url=https://casclient.com # 填客户端的访问前缀
HTTP服务对接CAS时登陆后报未认证受权的服务
浏览器
解决办法: 服务端开启http,默认只开始https和imaps。参考 http://blog.csdn.net/leftfist...tomcat
操做步骤(1): 修改
services\HTTPSandIMAPS-10000001.json
文件服务器"serviceId" : "^(https|imaps)://.*" 改成==> "serviceId" : "^(https|http|imaps)://.*",操做步骤(2): 在
application.properties
文件中添加:cas.tgc.secure=false cas.serviceRegistry.initFromJson=true #这一点真是过重要了!!!!!!!!
多应用注销时会有一个注销失败
解决办法: 配置客户端的参数:
useSession
为false
,即不开启session持久。参数配置参考https://github.com/apereo/jav...。示例:@EnableCasClient public class Application extends CasClientConfigurerAdapter { public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } @Override public void configureValidationFilter(FilterRegistrationBean validationFilter) { validationFilter.getInitParameters().put("useSession", "false"); } }