Springboot+CAS单点登录

摘要:
“我们的密码是明文,因此加密方法被注释掉了。p:passwordEncoder ref=”passwordEncode“/˃--˃2.3重新启动测试3:springBoot客户端3.1引导包<parent><groupId>org.springframework.boot</groupId><artifactId>springbootstarter parent</artifactId><version>1.5.13。发布˂!--web场景启动程序,包括Tomcat和spring-mvcrestulaopjackjson支持。

一:安装CAS

下载cas:https://github.com/apereo/cas

1.1 将cas并打成war包。放入一个干净的tomcat中,启动tomcat测试: http://localhost:8080/cas/login

  Springboot+CAS单点登录第1张

1.2 默认账号密码:casuser     Mellon     我们可以在tomcatwebappscasWEB-INFdeployerConfigContext.xml文件添加一个账号密码

  Springboot+CAS单点登录第2张

1.3 修改tomcat端口为9080, 并将tomcatwebappscasWEB-INFcas.properties的server.name改为http://localhost:9080

1.4 去除https认证:

1.4.1 在tomcatwebappscasWEB-INFdeployerConfigContext.xml文件
      的p:httpClient-ref="httpClient"后面添加p:requireSecure="false" 
1.4.2 把tomcatwebappscasWEB-INFspring-configuration的
      ticketGrantingTicketCookieGenerator.xml文件里面把p:cookieSecure="true"改为false;
      p:cookieMaxAge="-1"改为3600(-1是不保存cookie,3600秒是一个小时,保存登录信息)
1.4.3 把tomcatwebappscasWEB-INFspring-configuration的
      warnCookieGenerator.xml的p:cookieSecure="true"改为false
      p:cookieMaxAge="-1"改为3600

  Springboot+CAS单点登录第3张

1.5 配置单点登出: 将tomcatwebappscasWEB-INFcas-servlet.xml中${cas.logout.followServiceRedirects:false}括号里的值改为true

1.6 启动测试:  输入刚才配置的账号密码   wulei / wulei

  Springboot+CAS单点登录第4张

二:配置数据源(CAS对接数据库)

2.1 在tomcatwebappscasWEB-INFlib里添加 c3p0连接池   mysql驱动   cas的jdbc支持包

  Springboot+CAS单点登录第5张

2.2 修改tomcatwebappscasWEB-INFdeployerConfigContext.xml文件

2.2.1 注释掉<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />;添加<entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver"/>

  Springboot+CAS单点登录第6张

2.2.2  添加数据源   <bean id="dataSource"    添加加密方式 <bean id="passwordEncoder"     添加sql语句  <bean id="dbAuthHandler"

    <!-- 第一个bean -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  
              p:driverClass="com.mysql.jdbc.Driver"  
              p:jdbcUrl="jdbc:mysql://127.0.0.1:3306/youfanshop?characterEncoding=utf8"  
              p:user="root"  
              p:password="root" /> 
    <!-- 第二个bean          
    <bean   
                 
              c:encodingAlgorithm="MD5"  
              p:characterEncoding="UTF-8" /> -->
    <!-- 第三个bean 
    <bean    
             
          p:dataSource-ref="dataSource"  
          p:sql="select passwordencrypt from user where name  = ?"  
          我们密码用明文, 所以把加密方式注释掉, 
          p:passwordEncoder-ref="passwordEncoder"
          />  -->
    <bean id="dbAuthHandler"  
          class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"  
          p:dataSource-ref="dataSource"  
          p:sql="select passwordencrypt from user where name  = ?" />

  Springboot+CAS单点登录第7张

2.3 重启测试(此时就能用数据库的账号密码登录了)

   Springboot+CAS单点登录第8张

三:springBoot客户端

3.1 导包

    <parent> 
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.13.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    
    <dependencies>
        <!--web场景启动器,包含 Tomcat 和 spring-mvc restful  aop jackjson支持。 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- CAS依赖包 -->
        <dependency>
            <groupId>net.unicon.cas</groupId>
            <artifactId>cas-client-autoconfig-support</artifactId>
            <version>1.5.0-GA</version>
        </dependency>
    </dependencies>

3.2 application.properties

server.port=8081

cas.server-url-prefix=http://127.0.0.1:9080/cas
cas.server-login-url=http://127.0.0.1:9080/cas/login
cas.client-host-url=http://127.0.0.1:8081
cas.validation-type=CAS

3.3 配置类

import net.unicon.cas.client.configuration.CasClientConfigurerAdapter;
import net.unicon.cas.client.configuration.EnableCasClient;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableCasClient
public class CasConfigure extends CasClientConfigurerAdapter {
@Override
public void configureAuthenticationFilter(FilterRegistrationBean authenticationFilter) {
    super.configureAuthenticationFilter(authenticationFilter);
        authenticationFilter.getInitParameters().put("authenticationRedirectStrategyClass","com.patterncat.CustomAuthRedirectStrategy");
    }
}

3.4 控制器

@RestController
public class IndexController {
    
    @RequestMapping("/login")
    public String auth() {
        return "login success";
    }
}

3.5 主函数

@SpringBootApplication
public class Application {

     private static Logger log = Logger.getLogger(Application.class);
     
     public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
            log.info("SpringBoot Start Success");
        }
}

测试:  浏览器输入   127.0.0.1:8081/login之前会先跳转到CAS的登陆页面,登录成功之后才会进入Controller。

免责声明:文章转载自《Springboot+CAS单点登录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇子窗体中如何调用父窗体里的方法Xenu Link Sleuth 简单好用的链接测试工具下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

从jvm的角度来看java的多线程

最近在学习jvm,发现随着对虚拟机底层的了解,对java的多线程也有了全新的认识,原来一个小小的synchronized关键字里别有洞天。决定把自己关于java多线程的所学整理成一篇文章,从最基础的为什么使用多线程,一直深入讲解到jvm底层的锁实现。 多线程的目的 为什么要使用多线程?可以简单的分两个方面来说: 在多个cpu核心下,多线程的好处是显而易见...

CAS单点登录

1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO )。 CAS 开始于 2001 年, 并在 2004 年 12 月正式成为 JA...

CAS—认证原理

  CAS,Central Authentication Service—中央认证服务,是Yale 大学发起的一个企业级的、开源的项目。旨在为Web应用系统提供一种可靠的SSO解决方式。以下简介SSO,重点介绍CAS认证过程。 一、    SSO简单介绍  1.1   概念   SSO英文全称Single Sign On,是眼下比較流行的服务于企业业务整...

CAS 5.X 安装

官方文档: https://apereo.github.io/cas/5.1.x/index.html 几个基本概念 CAS Server: SSO服务器端 CAS Client : SSO客户端,内置于各个子应用 ST: Service Ticket 用于登录验证 TGC:Ticket Granted Cookie 用于验证是否已经登录,保存在客户端Co...

深入解析synchronized

深入解析synchronized 1 常见的几个并发问题 1.可见性问题 案例演示:一个线程根据boolean类型的标记flag, while循环,另一个线程改变这个flag变量的值,另一个线程并不会停止循环。 /** * @author WGR * @create 2020/12/22 -- 20:18 */ public class Test01...

JAVA CAS原理深度分析

看了一堆文章,终于把JAVA CAS的原理深入分析清楚了。 感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.net/2011/09/resolve-aba-by-atomi...