CAS 5.3.x 单点登录

CAS5.3单点登录服务端搭建与整合springboot 什么是单点登录 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 SSO是概念,实现SSO需要用到CAS框架 使用cas框架实现单点登陆 有多个不同服务器的web层需要登陆。就要使用cas。在一个web层页面登录,其他页面都不需要登录就能访问 如www.tao... 阅读详情

目录

一:Cas server 搭建

二:证书配置

1:生成证书

2:导出数字证书

3:数字证书导入到JDK中

 4:配置tomcat 

三:添加数据库支持

1:注释掉静态用户名和密码

 2:添加新配置

三:客户端搭建 

 1:搭建个spring boot项目

2:配置Security

3:添加接口

4:未认证授权的服务


最近在网上搜索CAS 单点登录及第三方授权登录的功能,网上一搜一大堆,使用到处都是坑,那么多抄袭的,我也只能苦笑。。。

自己动手丰衣足食,所有还是把自己的正确功能记录一下,给大家做个参考

一:Cas server 搭建

CAS提供了模板 Overlay Template,方便使用 https://github.com/apereo/cas-overlay-template,当前版本是5.3.16,JDK 1.8+

IDEA导入下载的模板,暂时不修改任何熟悉,添加Tomcat

 启动Cas Server,打开http://localhost:8080/cas/login

输入用户名: casuser 密码:Mellon

静态的用户名和密码在application.properties里配置

​

 因为使用静态的用户和http连接,左侧有提示

​

黄色内容提示我们没有使用https,本地暂时使用的是http

蓝色内容提示我们使用了静态的用户登录,当然我们会在后面添加数据库支持

二:证书配置

1:生成证书

HTTPS需要证书的支持,所有我们借用JDK提供的工具keytool生成自己使用的证书

keytool -genkey -alias caskeystore -keypass cas123 -keyalg RSA -validity 36500 -keystore D:/Java/keys/cas.keystore

 名字与姓氏时为为具体路由地址,就是待会CAS认证服务器,sso.test.com,时间设置的比较长,36500单位是天

​

2:导出数字证书

 keytool -export -file D:/Java/keys/cas.crt -alias caskeystore -keystore D:/Java/keys/cas.keystore

 

3:数字证书导入到JDK中

keytool -import -keystore D:/Java/jdk1.8.0_161/jre/lib/security/cacerts -file D:/Java/keys/cas.crt -alias caskeystore -storepass changeit

​

因为我们没有这个域名,所有将本地的host文件修改下,添加以下

127.0.0.1       sso.test.com

 4:配置tomcat 

在server.xml中

    <Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol" maxThreads="150" SSLEnabled="true" >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="D:/Java/keys/cas.keystore" certificateKeystorePassword="cas123" type="RSA" />
        </SSLHostConfig>
    </Connector>

 访问 https://sso.test.com/cas/login

 

已经可以正常访问了。 

三:添加数据库支持

1:注释掉静态用户名和密码

#cas.authn.accept.users=casuser::Mellon

 2:添加新配置

#以下为本地的数据库配置信息
cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/user?serverTimezone=UTC&allowMultiQueries=true
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=123456
cas.authn.jdbc.query[0].sql=select password from data_user where user_name = ?
cas.authn.jdbc.query[0].fieldPassword=password
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect
cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
#指定过期字段,1为过期,若过期不可用(可选)
#cas.authn.jdbc.query[0].fieldExpired=expired
#为不可用字段段,1为不可用,需要修改密码(可选)
#cas.authn.jdbc.query[0].fieldDisabled=disabled

3:在pom.xml中添加配置

<dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-support-jdbc</artifactId>
    <version>${cas.version}</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.18</version>
</dependency>

 

mysql版本根数据库版本一致就行 

建表语句

CREATE TABLE DATA_USER(
    ID VARCHAR(32)    COMMENT '编号' ,
    USER_NAME VARCHAR(60)    COMMENT '用户名' ,
    PASSWORD VARCHAR(60)    COMMENT '密码' ,
    CREATED_BY VARCHAR(32)    COMMENT '创建人' ,
    CREATED_TIME DATETIME   DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ,
    UPDATED_BY VARCHAR(32)    COMMENT '更新人' ,
    UPDATED_TIME DATETIME   DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间' 
)  COMMENT = '用户表';

三:客户端搭建 

 1:搭建个spring boot项目

 

以下是pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>client1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>client1</name>
    <description>client1</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 新增的引用 -->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-cas</artifactId>
            <version>5.5.2</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

 新建application.yml

cas:
    server:
        host: https://sso.test.com/cas
        login: ${cas.server.host}/login
        logout: ${cas.server.host}/logout
app:
    server:
        host: http://localhost:${server.port}${server.servlet.context-path}
        login: /login/cas
        logout: /logout

server:
#    address: 127.0.0.1
    port: 9998
    servlet:
        context-path: /client1

# 为了方便调试可以打开
#logging.level.org.springframework.security: debug
#logging.level.web: debug

2:配置Security

添加SecurityConfig

@Configuration
@EnableWebSecurity //启用web权限
@EnableGlobalMethodSecurity(prePostEnabled = true) //启用方法验证
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    private static final String CAS_AUTHENTICATION_PROVIDER_KEY = "casAuthenticationProviderKey";

    @Autowired
    private CasProperties casProperties;

    /**定义安全策略*/
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //禁用csrf保护机制
        http.csrf().disable();
        //禁用cors保护机制
        http.cors().disable();
        //禁用form表单登录
        http.formLogin().disable();
        //增加自定义过滤器

        http.authorizeRequests()//配置安全策略
//                .antMatchers("/**").permitAll()
                .antMatchers("/common/**").hasAnyRole("USER")
//                .anyRequest().authenticated()//其余的所有请求都需要验证
                .and()
                .logout()
                .permitAll();//定义logout不需要验证

        http.exceptionHandling()
                .authenticationEntryPoint(casAuthenticationEntryPoint())
                .and()
                .addFilter(casAuthenticationFilter())
                .addFilterBefore(casLogoutFilter(), LogoutFilter.class)
                .addFilterBefore(singleSignOutFilter(), CasAuthenticationFilter.class);

    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        super.configure(auth);
        auth.authenticationProvider(casAuthenticationProvider());
    }

    /**
     * CAS认证入口点开始 =============================================================================
     */
    //即跳转至服务端的cas地址
    @Bean
    public CasAuthenticationEntryPoint casAuthenticationEntryPoint() {
        CasAuthenticationEntryPoint casAuthenticationEntryPoint = new CasAuthenticationEntryPoint();
        casAuthenticationEntryPoint.setLoginUrl(casProperties.getCasServerLogin());
        casAuthenticationEntryPoint.setServiceProperties(serviceProperties());
        return casAuthenticationEntryPoint;
    }


    // 设置客户端service的属性
    @Bean
    public ServiceProperties serviceProperties() {
        ServiceProperties serviceProperties = new ServiceProperties();
        // 设置回调的service路径,此为主页路径
        // Cas Server认证成功后的跳转地址,这里要跳转到我们的Spring Security应用,
        // service 配置自身工程的根地址+/login/cas,表示是通过自身工程跳转到cas的登录页面,/login/cas 这个是security集成cas的固定写法
        serviceProperties.setService(casProperties.getAppServerHost() + casProperties.getAppServerLogin());
        // 对所有的未拥有ticket的访问均需要验证
        serviceProperties.setAuthenticateAllArtifacts(true);
        // sendRenew默认是false,true则意味着不允许单点登录,用户需要重新输入用户名密码以验证
        // 在安全级别要求比较高的情况下可以使用
        // serviceProperties.setSendRenew(false);
        return serviceProperties;
    }
    /**
     * CAS认证入口点结束 =============================================================================
     */

    /**
     * CAS认证过滤器开始 =============================================================================
     */
    @Bean
    public CasAuthenticationFilter casAuthenticationFilter() throws Exception {
        CasAuthenticationFilter casAuthenticationFilter = new CasAuthenticationFilter();
        casAuthenticationFilter.setAuthenticationManager(authenticationManager());
        casAuthenticationFilter.setFilterProcessesUrl(casProperties.getAppServerLogin());
        return casAuthenticationFilter;
    }

    /**
     * 创建CAS校验类
     * Notes:TicketValidator、AuthenticationUserDetailsService属性必须设置;
     * serviceProperties属性主要应用于ticketValidator用于去cas服务端检验ticket
     */
    @Bean
    public CasAuthenticationProvider casAuthenticationProvider() {
        CasAuthenticationProvider casAuthenticationProvider = new CasAuthenticationProvider();
        casAuthenticationProvider.setAuthenticationUserDetailsService(customUserDetailsService());
        casAuthenticationProvider.setServiceProperties(serviceProperties());
        casAuthenticationProvider.setTicketValidator(cas20ServiceTicketValidator());
        casAuthenticationProvider.setKey(CAS_AUTHENTICATION_PROVIDER_KEY);
        return casAuthenticationProvider;
    }

    /**
     * 用户自定义的AuthenticationUserDetailsService
     */
    @Bean
    public AuthenticationUserDetailsService<CasAssertionAuthenticationToken> customUserDetailsService() {
        return new CustomUserDetailsService();
    }

    /**
     * 验证ticker,向cas服务器发送验证请求
     */
    @Bean
    public Cas20ServiceTicketValidator cas20ServiceTicketValidator() {
        // 配置上服务端的校验ticket地址
        return new Cas20ServiceTicketValidator(casProperties.getCasServerHost());
    }

    /**
     * CAS认证过滤器结束 =============================================================================
     */

    /**
     * CAS登出过滤器开始 =============================================================================
     */
    /**
     * 请求单点退出过滤器
     * @return
     */
    @Bean
    public LogoutFilter casLogoutFilter() {
        LogoutFilter logoutFilter =
                new LogoutFilter(casProperties.getCasServerLogout(), new SecurityContextLogoutHandler());
        logoutFilter.setFilterProcessesUrl(casProperties.getAppServerLogout());
        return logoutFilter;
    }

    @Bean
    public SingleSignOutFilter singleSignOutFilter() {
        SingleSignOutFilter singleSignOutFilter = new SingleSignOutFilter();
        singleSignOutFilter.setIgnoreInitConfiguration(true);
        return singleSignOutFilter;
    }
    /**
     * CAS登出过滤器结束 =============================================================================
     */
}

配置读取文件CasProperties

@Component
@Data
public class CasProperties {
    @Value("${cas.server.host}")
    private String casServerHost;
    @Value("${cas.server.login}")
    private String casServerLogin;
    @Value("${cas.server.logout}")
    private String casServerLogout;
    @Value("${app.server.host}")
    private String appServerHost;
    @Value("${app.server.login}")
    private String appServerLogin;
    @Value("${app.server.logout}")
    private String appServerLogout;
}

自定义授权CustomUserDetailsService

public class CustomUserDetailsService implements AuthenticationUserDetailsService<CasAssertionAuthenticationToken> {
    /**
     * @param token The pre-authenticated authentication token
     * @return UserDetails for the given authentication token, never null.
     * @throws UsernameNotFoundException if no user details can be found for the given
     *                                   authentication token
     */
    @Override
    public UserDetails loadUserDetails(CasAssertionAuthenticationToken token) throws UsernameNotFoundException {
        System.out.println("人员信息");
        List<GrantedAuthority> authorities = new ArrayList();
        authorities.add(new SimpleGrantedAuthority("ROLE_USER"));
        return new User(token.getName(), "", authorities);
    }
}

3:添加接口

@RestController
@AllArgsConstructor
@RequestMapping("/common")
public class Common {

    @GetMapping( "/test")
    public String test() {
        return "客户端1";
    }
}

client2和client1配置基本相同,自己操作即可

启动clien项目,分别访问http://localhost:9998/client1/common/test和http://localhost:9999/client2/common/test

发现以下错误

4:未认证授权的服务

出现以上问题是因为Cas Server未开启http协议

在服务端的WEB-INF/classess/application.properties添加以下内容

#设置安全为false
cas.tgc.secure=false
#开启识别json文件,默认false
cas.serviceRegistry.initFromJson=true

# 配置允许登出后跳转到指定页面
cas.logout.followServiceRedirects=true
# 跳转到指定页面需要的参数名为 service
cas.logout.redirectParameter=service

同样修改WEB-INF\classes\services\HTTPSandIMAPS-10000001.json,在serviceId的属性中添加http后重启服务端即可

{
  "@class" : "org.apereo.cas.services.RegexRegisteredService",
  "serviceId" : "^(https|http|imaps)://.*",
  "name" : "HTTPS and IMAPS",
  "id" : 10000001,
  "description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.",
  "evaluationOrder" : 10000
}

现在重新打开http://localhost:9998/client1/common/test

 输入用户名和密码,登录

访问 http://localhost:9999/client2/common/test,直接显示内容

单点登录到这里就完成了

Apereo CAS5.2.3 自定义登录页,验证码,扩展开发,注册功能 完整项目在https://download.csdn.net/download/u010588262/10327539 这个资源是新增功能之后的main文件夹 对应博客系列:https://blog.csdn.net/u010588262/article/category/7548325 对应博客这篇:https://blog.csdn.net/u010588262/article/details/80014083 立即下载

相关推荐

ULN2003驱动28BYJ-48步进电机详解(附:51 32代码讲解)

本文介绍了28BYJ-48步进电机的驱动原理以及注意事项,并展示了极简 32 51驱动代码

qq_41818650的博客 1万+

CAS单点登录(第5版)

欢迎学习最新版课程:CAS单点登录(第7版)https://edu.csdn.net/course/detail/40241欢迎学习最新版课程:CAS单点登录(第7版)https://edu.csdn.net/course/detail/40241 

Gemini国内合规接入指南:API身份链构建与镜像站选型

生成式AI服务接入本质是服务可用性工程,而非单纯网络连通问题。理解大模型API调用原理,关键在于掌握身份认证、权限控制与数据流向三大技术要素。Gemini作为主流多模态模型,其国内可用路径已从‘模拟访问’转向‘能力映射’——聚焦文本生成等核心能力的稳定调用。通过构建七步Google Cloud身份链(含+86实名、国际信用卡核验、Service Account最小权限配置),可实现99.2%高成功率的合规API接入;而教育型、企业型、开发者型三类镜像站则提供差异化过渡方案,均需满足端到端加密、境内CDN托管

weixin_29046035的博客 436

cas5.3.2单点登录-骨架搭建(一)

原文地址,转载请注明出处:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;https://blog.csdn.net/qq_34021712/article/details/80871015&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp

这个名字想了很久 2万+

华为昇腾Ascend C中级认证考试-tanh

注册昇腾社区账号后可以免费领券考试。

2600_96284887的博客 471

Excel数据分析实例

Excel数据分析实例 Excel数据分析五步走: 明确目的——观察数据——数据清洗——数据分析——数据可视化 数据是从Kaggle上下载的,牛油果的案例 目的 数据分析都是为了企业业务做得更好,这次案例主要针对于牛油果的销售量进行分析。 数据 检查是否有缺失值、是否一致化、是否有脏数据 分析 1.不同区域不同季度的牛油果价格走势 从上图中可以看出,东北地区的价格一直较高,而中南地区一直较低 2.2015-2018四年不同城市的销售总和 3.四年间不同城市的销售排名(降序排序) 可视化 1.四年间销

m0_53033371的博客 4367

CAS单点登录-Service配置(七)

CAS单点登录-Service配置(七) 本章重点对本地json的配置进行讲解 简介 cas客户端接入称之为service,必须经过cas的允许才能进行登录,当然不同的客户端可以做不同的事情,其中包括: 自定义主题(各客户端登录页自定义) 自定义属性(服务属性(固定)与用户属性(动态)) 自定义协议 自定义登录后跳转方式,跳转路径 授权策略(拒绝属性、可登录时间范围限制、等等) 拒绝授权路径

悟空、的博客园 1万+

基于PyTorch的BP神经网络PID控制器动态调参实战

本文详细介绍了基于PyTorch的BP神经网络PID控制器动态调参实战,结合BP神经网络的自适应能力和PID控制算法的经典优势,实现工业控制中的高效参数调整。通过PyTorch实现BP-PID融合架构,包括网络设计、损失函数优化及动态调参技巧,显著提升控制性能,适用于温度控制、电机控制等场景。

weixin_29094775的博客 521

二. CAS5.3X 单点登录-自定义风格主题开发

本章内容介绍cas项目自定义风格主题开发 我用到的cas版本为5.3.1,代码存放在github 开发环境 Jdk1.8 Maven3.x IDEA 官方文档:https://apereo.github.io/cas/5.3.x/installation/User-Interface-Customization.html 经过上一章,我们已经搭建了最基础的工程。能够通过静态用户登录并跳...

Jeffery的博客 2756

Landsat9 地表温度反演方法

landsat9地表温度反演及缺失值处理方法

xiangliu12345的博客 3918

谈谈人大金仓数据库

人大金仓数据库(Kingbase)是国产自主研发的关系型数据库管理系统,兼容主流数据库语法,支持高并发、高安全性及国产化适配。该数据库提供完整的安装部署方案,包括环境准备、初始化配置和验证流程,并配备专业的数据迁移工具(KDMS)实现从Oracle/MySQL等数据库的平滑迁移。系统提供KStudio等图形化管理工具,支持性能监控、备份恢复等运维功能,同时具备性能调优、高可用架构、分区表管理等高级特性,满足政府、金融等领域的企业级需求。

蜚鸣的博客 2096

CAS 5.3.x 单点登录实现集群搭建,快速入手(一)!!!!

前言: 该篇教程描述如何搭建CAS5.3.x集群操作,由于官方文档并没有贴出集群搭建方案,所以本博主根据源码剖析解决该问题。 文档并没有深入浅出说明原理,直接贴代码用于快速上手学习。 gainward555指出官网有提供配置,本人确实没注意到该配置内容,以为只是其他与redis有关并没有详细看配置内容,仔细看后发现确实是集群配置(吐槽下:官网的文档说明写的跟猫屎一样),地址如下: 官方配置...

Qensq的博客 6979

【数字IC刷题】华为海思数字IC笔试题(1)详细解析版

【数字IC刷题】华为海思数字IC笔试题(1)详细解析版

MoorePlus的博客 4220

一. CAS5.3X 单点登录-基础搭建

本章内容介绍cas项目搭建 我用到的cas版本为5.3.1,代码存放在github,欢迎下载 开发环境 Jdk1.8 Maven3.x IDEA 1.下载Overlay 通过官方文档(https://apereo.github.io/cas/5.3.x/)介绍,我们可以通过使用一个名叫Overlay的项目来生成一个可以直接用的war包,来部署服务端,先下载这个项目(https://gi...

Jeffery的博客 3484

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【SSO-CAS部署】安装部署单点登录组件CAS(5.3.x版本)

SOO是现在企业比较流行的业务整合解决方案之一,定义解决登录,可以应用在不同系统中,用户只需要登录一次,就可以访问所有相互信任的应用系统(模块开发、同家公司不同产品等等),例如百度,旗下的子系统。 架构图如下: 一,初步安装部署 准备需要用的cas-server包并配置 从CAS官网下载:上cas的官网下载cas server 点击进入官网地址,  笔者这里选择的是5.x.x的最后一个版本5.3.x 下载后解压导入IDEA 编译打包 替换Maven的中央仓库 <!--阿里.

OxYGC 2785

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

cas实现单点登录-cas5.3.x服务器端搭建,并在tomcat上运行

最近公司要做一个单点登录的东西,这里记录一下步骤方便记忆 首先:对cas不了解的可以先看下官方文档,或者看下github官网 然后开门见山,直接开始搭建 我的环境: windows 7 当然10也可以 tomcat 8 最少8以上 cas 5.3 其实5.x都行 java 8 最少8以上 如果是cas6.x官网要求jdk11,但是6.x还不完善,最好不要轻易尝试,出问题也没有博客可以解决 ...

WWXA 2775

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

CAS 5.3.x 单点登录实现集群搭建,快速入手(三)!!!!

前言: 该篇教程描述如何搭建CAS5.3.x集群操作,由于官方文档并没有贴出集群搭建方案,所以本博主根据源码剖析解决该问题。 文档并没有深入浅出说明原理,直接贴代码用于快速上手学习。 学习CAS5.x 推荐看 以下两个博主文章 此博主文章:https://blog.csdn.net/u010475041/article/category/7156505 此博主文章:https://blo...

Qensq的博客 3684

CAS 5.3.x 单点登录实现集群搭建,快速入手(二)!!!!

前言: 该篇教程描述如何搭建CAS5.3.x集群操作,由于官方文档并没有贴出集群搭建方案,所以本博主根据源码剖析解决该问题。 文档并没有深入浅出说明原理,直接贴代码用于快速上手学习。 学习CAS5.x 推荐看 以下两个博主文章 此博主文章:https://blog.csdn.net/u010475041/article/category/7156505 此博主文章:https://blo...

Qensq的博客 4645

cas服务搭建

目录一、概要二、版本三、搭建方式四、源码下载五、构建启动六、总结 一、概要 Apereo Cas是目前Java环境下使用比较广泛的单点登录系统,因此学习使用cas来搭建单点登录系统是很有必要的。基于cas开发一套企业的单点登录系统前,需要先完成cas的骨架搭建,这也是本文档要对搭建过程进行的一个详细说明。 二、版本 cas版本主要分为4.x.x、5.x.x以及6.x.x,关于版本如何选择,具体还是要了解每个版本主要的变化。但是有些重要的地方需要关注的,比如5.x.x版本使用maven来管理依赖,以及java

JL 796

CAS5.3.x 单点登录一--集成其他OAuth,ID格式简化

cas5.3 委托认证后ID信息不正确的处理办法

gujianxin的专栏 780

cas3.x单点登录老版本整合spring-boot2.x过程以及遇到的问题解决办法

cas老版本整合spring-boot2.xcas老版本整合spring-boot2.x依赖配置cas-client注意事项 cas老版本整合spring-boot2.x 基于spring-boot2.x和cas-client3.3.3,以及单点登录中心cas-server.core-3.5.2 依赖 <dependency> <groupId>org.jasig...

GIS技术方向,GIS地图技术分享(GIS入门、Openlayers教程、Leaflet教程),做最好的GIS地图开发教程。关注博主公众号:eguid 1262

CAS5.3服务器搭建及SpringBoot整合CAS实现单点登录(转载)

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。我们目前的系统存在诸多子系统,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的session是无法解决的,我们需要使用相关的单点登录技术来解决。

63

单点登录CAS-01:如何找到适合自己JDK版本的CAS?

单点登录CAS-01环境准备1、背景2、步骤 1、背景 最近的项目需要用到单点登录,网上此类文章有很多,我尝试只通过看官方文档上手,特写此系列文章记录一下上手流程。 我的项目环境用的是JDK1.8,而cas最新版本需要jdk11,因此遇到的第一个问题是:如何找到适合我项目使用的CAS版本? 笨方法:找到历史版本页面,一个个点进去查看其依赖环境,直到找到合适的版本。 2、步骤 1、打开CAS官网:http://www.jasig.org/cas,在页面上找到"download"字样的链接: 2、点击后进入

小码哥的专栏 2505

CAS5.3.x 单点登录二--集成其他OAuth,360浏览器首次登录无效

在对外提供Oauth2.0服务,同时调用委托认证的情况下,会发现用360浏览器时第一次认证后,第二次仍然会要求委托认证。

gujianxin的专栏 548

初见cas服务端1:搭建环境

之前工作一直都是用客户端去调用服务端,一直没时间看看cas服务端内容,最近准研究下。 从网上也是搜索了很多东西,了解了大概,准备搭建,建议搭建先试试5.3x版本会好点,我目前用的是5.3.14, 一开始准备研究最新版本,但是有些工具我还不是太熟悉。 第一步:到官网这是他们的源码,可以看看, 我们实际上用的是这个模板cas-overlay-template,这个模板在这个地址 ...

每天进步一点 384

CAS 5.3.X授权第三方(码云)登录

针对单点登录的配置,可以看我上一篇:CAS 5.3.x 单点登录https://blog.csdn.net/Coder_Knight/article/details/120720018 Cas作为国外的 项目,所有集成了外网的很多第三方,github 、goole等,但是国内的第三方需要自己去配置,Cas也确实提供了配置,下面就去实现该功能吧 # cas.authn.pac4j.oauth2[0].authUrl= # cas.authn.pac4j.oauth2[0].tokenUrl= # ca.

Coder_Knight的博客 3424
上一篇: IDEA完美解决 Could not autowire. No beans of 'xxx' type found.报错
下一篇: CAS 5.3.X授权第三方(码云)登录
Coder_Knight
博客等级 码龄9年 7粉丝 5原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值