展开

关键词

CAS单点登录之支持认证

一、设计建,加用户信息表:DROP TABLE IF EXISTS `sys_user`; CREATE TABLE `sys_user` ( `id` int(11) NOT NULL AUTO_INCREMENT KEY (`id`), UNIQUE KEY `uk_u_1` (`username`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;二、CAS 配置部署在CAS.war里找到WEB-INF下面的cas.properties,这是cas的配置文件,可以自己加上一些配置:### Datasource config platform.jdbc.jdbcUrl platform.jdbc.initialSize=10 platform.jdbc.minIdle=10 platform.jdbc.maxActive=50同样在WEB-INF的developerConfigContext.xml里,加上 DataSource的配置,这里用了阿里的druid,所以需要往lib文件夹里丢一下druid的相关jar 同样在WEB-INF的developerConfigContext.xml里配置一下认证控制器

56030

Spring Boot+CAS 单点登录,如何对接

如果我们没有使用 CAS 这一套的话,这段代码当然是在用户登录的时候执行,用户登录时,从中查询用户的信息,然后做校验(参考本系列前面文章就懂)。 这是为了当用户在 CAS Server 上登录成功之后,拿着用户名回到 CAS Client,然后我们再去中根用户名获取用户的详细信息,包括用户的角色等,进而在后面的鉴权中用上角色。 } org.apereo.cas cas-server-support-jdbc ${cas.version} 注意这里不用添加驱动,系统会自动解决。 第四行表示配置用户查询 sql,根用户名查询出用户的所有信息。第五行表示中密码的字段名字是什么。第六行是驱动。 这里要用到查询,所以我们首先添加相关依赖: mysql mysql-connector-java org.springframework.boot spring-boot-starter-data-jpa

55220
  • 广告
    关闭

    90+款云产品免费体验

    提供包括云服务器,云数据库在内的90+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【SpringSecurity系列(二十五)】CAS 单点登录对接

    但是前面的案例有一个问题,就是登录用户是在 CAS Server 配置文件中写死的,没有对接,实际项目中,这里肯定要对接,所以今天,松哥就来和大家聊一聊 CAS Server 如何对接 如果我们没有使用 CAS 这一套的话,这段代码当然是在用户登录的时候执行,用户登录时,从中查询用户的信息,然后做校验(参考本系列前面文章就懂)。 这是为了当用户在 CAS Server 上登录成功之后,拿着用户名回到 CAS Client,然后我们再去中根用户名获取用户的详细信息,包括用户的角色等,进而在后面的鉴权中用上角色。 } org.apereo.cas cas-server-support-jdbc ${cas.version} 注意这里不用添加驱动,系统会自动解决。 第四行表示配置用户查询 sql,根用户名查询出用户的所有信息。第五行表示中密码的字段名字是什么。第六行是驱动。

    30420

    CAS下ABA问题及优化方案 | 架构师之路

    Set”(CAS),是一种常见的降低读写锁冲突,保证一致性的乐观锁机制。 考虑如下操作:并发1(上):获取出的初始值是A,后续计划实施CAS乐观锁,期望仍是A的时候,修改才能成功并发2:将修改成B并发3:将修改回A并发1(下):CAS乐观锁,检测发现初始值还是 A,进行修改上述并发环境下,并发1在修改时,虽然还是A,但已经不是初始条件的A了,中间发生了A变B,B又变A的变化,此A已经非彼A,却成功修改,可能导致错误,这就是CAS引发的所谓的ABA问题 优化方向:CAS不能只比对“值”,还必须确保的是原来的,才能修改成功。常见实践:“版本号”的比对,一个一个版本,版本变化,即使值相同,也不应该修改成功。 六、总结select&set业务场景,在并发时会出现一致性问题基于“值”的CAS乐观锁,可能导致ABA问题CAS乐观锁,必须保证修改时的“此”就是“彼”,应该由“值”比对,优化为“版本号”比对

    1.1K80

    CAS+SSO配置单点登录完整案例

    修改配置,支持mysql交互验证【部署CAS-client以及Tomcat的配置】【测试验证SSO】1.  -5.0.8.jar和cas-server-support-jdbc-4.0.0.jar放到cas得lib包中        4.5:修改配置,支持mysql交互验证 ⑤:部署CAS_Client 看到上述页面说明CAS-Server已经部署成功。用户名和密码肯定需要和进行交互验证的,那么如何配置呢?【说明】:我本地使用的是mysql。4.  至此,CAS交互验证的配置已经配置完成,你可以重新访问cas,输入中存在的用户名和密码,来看看效果如何~如果登录成功,说明配置无误。否则,请耐心检查配置是否有问题,jar包是否缺少。 现在,CAS已经支持交互验证了,服务端tomcat也支持HTTPS协议访问,现在,我们来搭建客户端,实现多个客户端的单点登录。

    20720

    简单的 CAS 实现 SSO 单点登录

    环境cas-server-4.1.8cas-client-3.4.0Java-8Maven-3Tomcat-7.0.72CAS Server 安装点此进入 CAS 下载列表,选择下载 cas-4.1.8 cas server 安全认证是基于 https 的,这里使用 JDK 自带的 keytool 工具生成字证书,生产环境系统的应用需要到证书提供商处购买证书。 CAS Server 配置基于用户认证回到 cas-4.1.8.zip 解压缩的目录,并进入 cas-server-support-jdbc 目录,在当前目录打开 cmd 并执行安装命令mvn - 其中 cas_test_db 中的 user 建表语句为CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar , `passwd` varchar(255) NOT NULL, PRIMARY KEY (`id`)) 重启 Tomcat,访问 https:www.fanlychie.com:8443cas,用中的

    21810

    Django 集成 CAS 实现 SSO 单点登陆

    sessionID 查询服务器上的 session 。 image-20200914135935427安装 CAS 的 Client 在 python 中对于 cas 的 client 客户端功能有不少开源CAS 服务端返回的 User 。 image-20200914162842100总结1.成功访问CAS服务,登陆用户之后,通过配置,可以自动将用户同步在客户端项目的用户中通过在 settings.py 配置自动同步用户:# 存入所有 CAS 服务端返回的 User

    79330

    简单的 CAS 实现 SSO 单点登录

    cas server 安全认证是基于 https 的,这里使用 JDK 自带的 keytool 工具生成字证书,生产环境系统的应用需要到证书提供商处购买证书。 证书的生成及 Tomcat 的配置可参考文章:keytool 生成字证书 – tomcat https 配置 。 CAS Server 配置基于用户认证回到 cas-4.1.8.zip 解压缩的目录,并进入 cas-server-support-jdbc 目录,在当前目录打开 cmd 并执行安装命令mvn - 其中 cas_test_db 中的 user 建表语句为CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar NULL, `passwd` varchar(255) NOT NULL, PRIMARY KEY (`id`))重启 Tomcat,访问 https:www.fanlychie.com:8443cas,用中的

    51940

    Spring Boot 实现单点登录的第三种方案!

    密钥的位置在 JDK 目录下的 libsecuritycacerts,小伙伴们根自己实际情况来修改(在 JDK9 之前,位置在 jrelibsecuritycacerts)。 UserDetailsService,关于 UserDetailsService,我想我也不必多做解释,大家参考本系列前面的文章就知道 UserDetailsService 的作用(Spring Security 如何将用户存入 userDetailService,但是目的不是为了从中查询做校验,因为登录是在 CAS Server 中进行的,这个的作用,我在后面会做介绍。 用户虽然在 CAS Server 上登录,但是,登录成功之后,CAS Client 还是要获取用户的基本信息、角色等,以便做进一步的权限控制,所以,这里的 loadUserByUsername 方法中的参 ,实际上就是你从 CAS Server 上登录成功后获取到的用户名,拿着这个用户名,去中查询用户的相关信心并返回,方便 CAS Client 在后续的鉴权中做进一步的使用,这里我为了方便,就没有去中查询了

    75330

    springboot 集成CAS 实现单点登录

    .> 连接mysql,在pom 中添加依赖 org.apereo.cas cas-server-support-jdbc ${cas.version} mysql mysql-connector-java cas.authn.jdbc.query.fieldExpired=expired#为不可用字段段,1为不可用,cas.authn.jdbc.query.fieldDisabled=disabled#方言 =com.mysql.jdbc.Driver#连接 cas.authn.jdbc.query.url=jdbc:mysql:localhost:3306cas? useUnicode=true&characterEncoding=UTF-8#用户名cas.authn.jdbc.query.user=root#密码cas.authn.jdbc.query.password 1, 0);INSERT INTO `sys_user` VALUES (3, mashu, d1f21ceb3f710ebbd9f408274aee1193, 0, 0);用户名和密码一样,密码在中是

    3.5K30

    面试必备之乐观锁与悲观锁

    乐观锁 总是假设最好的情况,每次去拿的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个,可以使用版本号机制和CAS算法实现。 乐观锁适用于多读的应用类型,这样可以提高吞吐量,像提供的类似于write_condition机制,其实都是提供的乐观锁。 当线程A要更新值时,在读取的同时也会读取version值,在提交更新时,若刚才读取到的version值为当前中的version值相等时才更新,否则重试更新操作,直到更新成功。 操作员 A 完成了修改工作,将版本号加一( version=2 ),连同帐户扣除后余额( balance=$50 ),提交至更新,此时由于提交版本大于记录当前版本,被更新,记录 操作员 B 完成了操作,也将版本号加一( version=2 )试图向提交( balance=$80 ),但此时比对记录版本时发现,操作员 B 提交的版本号为 2 ,记录当前版本也为

    1K20

    要玩转Java锁!首先得搞清楚乐观锁与悲观锁!

    乐观锁 总是假设最好的情况,每次去拿的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个,可以使用版本号机制和CAS算法实现。 乐观锁适用于多读的应用类型,这样可以提高吞吐量,像提供的类似于write_condition机制,其实都是提供的乐观锁。 当线程A要更新值时,在读取的同时也会读取version值,在提交更新时,若刚才读取到的version值为当前中的version值相等时才更新,否则重试更新操作,直到更新成功。 操作员 A 完成了修改工作,将版本号加一( version=2 ),连同帐户扣除后余额( balance=$50 ),提交至更新,此时由于提交版本大于记录当前版本,被更新,记录 操作员 B 完成了操作,也将版本号加一( version=2 )试图向提交( balance=$80 ),但此时比对记录版本时发现,操作员 B 提交的版本号为 2 ,记录当前版本也为

    11200

    Spring Boot 集成Shiro和CAS

    , authc); 这里为了测试,只限制user,实际开发中请修改为具体拦截的请求规则 anon:它对应的过滤器里面是空的,什么都没做 logger.info(##################从读取权限规则 shiroFilter中##################); filterChainDefinitionMap.put(useredit**, authc,perms); 这里为了测试,固定写死的值,也可以从或其他配置中读取 StudentService 和 IScoreDao 只是一个例子,因为我们在这里可以用这样的方式获取到相关访问的对象, * 然后读取相关配置,配置到 shiroFilterFactoryBean )).iterator().next(); String loginName = (String)super.getAvailablePrincipal(principalCollection); 到查是否有此对象 如果需要jsp页面、Controller、实体类、连接测试等代码,可以先参考文章:http:blog.csdn.netcatooparticledetails50520958(建议先看这篇文章再看本文

    5.5K51

    Java并发编程之CAS第一篇理解

    当T匪A(也就是线程A):天王盖地虎是自己的副本的,想要更新为:宝塔镇河妖。当杨子荣回答后,T匪A就拿着,天王盖地虎,宝塔镇河妖,这句话和黑话(主内存)对比,对比上,则说明杨子荣说的对。 那么修改密码的三要素是什么大家知道吗:存储的原秘密;用户输入的原秘密;以及将要更新的密码。存储的原秘密(主内存),用户输入的原秘密(线程副本)。 当中存储的和用户输入的原密码对比相同的时候,才可以将原密码更新为新密码。否则就不能更新。从上面两个例子我们可以看到,要想成功,需要三个变量:主内存变量值、线程自己工作区副本值以及要更新的值。 那是因为CAS是无锁的一种算法。为了解决多线程并行(并发)情况下使用锁的话,性能消耗的一种机制。CAS操作流程:CAS操作包含了三个操作。 分别是:主内存值或主内存位置(V)、线程工作区副本更新前的值或者是预期值(A)以及要更新成的新值(B)。

    24820

    SSO统一身份认证——CAS Server6.3.x连接MySQL或Postgre进行认证(二)

    主要使用的环境如下 服务器系统:windows 10 环境:OpenJDK 11 web中间件:tomcat9 CAS Server:6.3.x :MariaDB 或 PostgreSQL 快速软件包 ,本篇文章我们将使用JDBC协议进行连接,并使用其中的用户进行登录。 1、在本地MySQL中创建我们需要使用的与相关表结构。 根当前使用的pg还是mariadb进行增加配置。### pg配置## cas.authn.jdbc.query.url=jdbc:mariadb:127.0.0.1:5432business? #开启识别json文件,默认falsecas.serviceRegistry.initFromJson=true4、打开当前项目根目录下.build.gradle 在其中进行添加jdbc包的引用和相应的包引用

    22130

    SSO统一身份认证——CAS Server6.3.x服务存储JPA(十一)

    简介上一节我们将CAS客服端注册到了服务中,使用的JSON配置的方式,而日常时我们更多的使用或者LDAP,本节我们将使用JPA实现CAS Server启动时将原有JSON配置自动初始至MariaDB 环境 主要使用的环境如下 服务器系统:windows 10 环境:OpenJDK 11 web中间件:tomcat9 CAS Server:6.3.x :MariaDB 或 PostgreSQL org.mariadb.jdbc.Drivercas.service-registry.jpa.dialect=org.hibernate.dialect.MariaDB103Dialect注:cas.service-registry.jpa.dialect方言配置的相关值需要根官方文档和其实际使用的版本进行配置 3、进行编译并启动,启动成功后观察E:IdeaProjectssso-cas-server>gradlew.bat clean buildimage-20210729171329839中多出来了四张表 ,这时表明我们的json已经初始到了,再次启动CAS客户端,访问http:localhost:8080显示为如下所示:image-20210729171452020至此我们就完成了服务使用JPA的功能

    7820

    CAS 5.3.1系列之支持JDBC认证登录(二)

    cas-server-support-jdbc-drivers ${cas.version} 注意5.3.1版本的cas-server-support-jdbc-drivers驱动是mysql8 cas.authn.jdbc.query.fieldExpired=expired# 为不可用字段段,1为不可用,需要修改密码cas.authn.jdbc.query.fieldDisabled=disabled# 连接 useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8# dialect 配置cas.authn.jdbc.query.dialect=org.hibernate.dialect.MySQLDialect# 用户名cas.authn.jdbc.query.user=root # 用户密码cas.authn.jdbc.query.password=root# 事务自动提交cas.authn.jdbc.query.autocommit=false# 驱动cas.authn.jdbc.query.driverClass

    63210

    Java并发锁(一):悲观锁与乐观锁

    今天我们来聊下线程中的悲观锁和乐观锁,首先提到悲观锁,乐观锁提到这两个名词,大家可能会先想到。注意啦,我们这里讲的是多线程中的锁,而不是中的锁(没听过的童鞋,可以百度了解下。 synchronized和Lock都是悲观锁,它们认为当使用的时候一定有其它线程来修改,所以在获取的时候就会加锁,确保不会被其它线程修改。 ) { Lock lock = new ReentrantLock(); lock.lock(); try { 同步资源 } finally { lock.unlock(); } }乐观锁,它认为使用的时候不会有别的线程来修改 只要在自身要进行update操作的时候,才会去判断之前的是否被别的线程修改了。如果没有被修改则会修改成功,相反则会修改不成功。 总结: 这里我们可以得出悲观锁适合写操作多的场景,先加锁可以保证写操作时正确。乐观锁适合读操作多的场景,不加锁的特点能够使其读操作的性能大幅提升。

    78220

    CAS 中央身份验证服务加单点登录和单点退出学习笔记

    最近在学习CAS中央认证服务和web项目使用shiro整合,整体来说步骤还是比较多的,至今有一些问题也没有彻底搞清楚。 从中了解到了maven overlay,shiro 的cas 设置,keystore 等相关的知识。现做一些记录,便于以后使用。 简单说主要有N个步骤下载cas-overlay-template项目生成keystore,设置密码,并配置到jetty或者tomcat中使用keystore生成cer,安装到jre可信证书中配置shiro 使用cascas中配置服务在cas中配置查询验证用户身份在cas中配置登录成功后返回自定义用户信息在shiro中设置查询用户角色和权限有一些问题还是没有搞懂,等有空了再好好看看为什么官方的overlay

    5110

    java 中的CAS与ABA问题

    传统的关系型里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁的思想。 乐观锁:总是假设最好的情况,每次去拿的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个,可以使用版本号机制和CAS算法实现。 乐观锁适用于多读的应用类型,这样可以提高吞吐量,像提供的类似于write_condition机制,其实都是提供的乐观锁。 2.1 CAS操作CAS 操作包含三个操作 —— 内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。 在运用CAS做Lock-Free操作中有一个经典的ABA问题:比如线程1从内存位置V中取出A,这时另一个线程2也从内存中取出A,并且线程2进行了操作之后变成了B,然线程2又将V位置变成了A,这时候线程

    68620

    相关产品

    • 归档存储

      归档存储

      腾讯云归档存储(Cloud Archive Storage, CAS)是面向企业和个人开发者提供的低成本、高可靠且易于管理的云端离线存储服务,适用于海量、非结构化数据长时间备份,实现数据的容灾和c。归档存储采用分布式云端存储,您可以通过 RESTful API 对存储的数据进行访问。归档存储易于管理,您无需关心硬件维护及容量扩展;按实际使用量付费,为您节省额外成本。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券