CAS

CAS 4 - Not able to retrieve the LDAP groups after successful authentication

心不动则不痛 提交于 2020-01-23 17:29:06
问题 I have configured CAS 4 / Spring Security / Active Directory and able to authenticate successfully. But I have difficulty in to retrieve roles and later use that for authorisation. I have the roles available after the authentication in CAS but I want to pass this to the service (web app) so that it can be used to check the authorisation (for eg. hasRole('ROLE_EDITOR') ) I think I am making some configuration mistake in the below beans which I investigating further. I have shown these

Get current/active security zone of a .NET application?

风流意气都作罢 提交于 2020-01-21 07:13:23
问题 I have an application that behaves oddly, and just to verify, I'd like to see which security zone it is currently running under. I've found the System.Security.SecurityZone enum, but can't seem to find anything that will return which of these I'm running under. Does anyone have any tips? Basically I want to find out if my application is running in MyComputer, Intranet, Internet, Untrusted, Trusted, etc. Edit: Here's the minor test-app I wrote to find this code, thanks to @blowdart. using

循环使用CAS实现自旋操作

不想你离开。 提交于 2020-01-20 02:54:20
大家碰到了实现一个线程安全的计数器的需求改怎么做呢?根据经验你应该知道我们要在多线程中实现共享变量的原子性和可见性问题,于是锁成为一个不可避免的话题,下文讨论的是与之对应的无锁CAS。 为什么要无锁 我们一想到在多线程下保证安全的方式,肯定是锁,不管从硬件、操作系统层面都或多或少在使用锁。锁有优缺点吗? 使用锁就需要获得锁、释放锁,CPU需要通过上下文切换和调度管理来进行这个操作,对于一个独占锁,一个线程在持有锁后没有执行结束,其他线程就必须等待,等到前面的线程执行完毕,CPU就会把锁拿出来给其他线程来抢了。锁的这种概念基于一种悲观机制,它总是认为数据会被修改,所以,你在操作一部分代码块之前先加一把锁,操作完成后再释放,这样就安全了。 什么是 CAS 比较并交换(compare and swap,CAS),是原子操作的一种,可用于在多线程编程中实现不被打断的数据交换操作,从而避免多线程同时改写某一数据时由于执行顺序不确定性以及中断的不可预知性产生的数据不一致性问题。该操作通过将内存中的值与指定的数据进行比较,当数值一样时,将内存中的数据替换成新值。 JAVA如何实现 package com.concurrent.program; import java.util.ArrayList; import java.util.Arrays; import java.util.List;

Java多线程(5)

风格不统一 提交于 2020-01-19 18:35:07
Java多线程(5) CPU缓存一致性问题 因为缓存的出现,极大提高了CPU的吞吐能力,但同时也引入了缓存不一致的问题,比如i++操作 在程序运行过程,首先将主存中的数据复制一份存放到CPU Cache中,那么CPU寄存器进行数值计算的时候就直接到Cache中读取和写入,当整个运算过程完毕之后再讲Cache中的数据刷新到主存当中 具体如下: 读取主内存的i到cpu cache 对i进行+1操作 将结果写回到cpu cache中 将数据刷新到主内存 i++在单线程环境不会有什么问题,但在多线程下就会出现问题了 每个线程都有自己的工作内存,变量i会在多个线程的本地内存中都保存一个副本,如果同时两个线程执行i++操作,假设i的初始值为0,每一个线程都从主内存中获取i的值存入cpu cache,然后经过计算再写入主内存,很有可能i在经过了两次自增之后结果还是1,这就是典型的缓存不一致的问题 Java内存模型决定了一个线程对共享变量的写入何时对其他线程可见,Java内存模型定义了线程和主内存之间的抽象关系: 共享变量存储在主内存,每个线程都可以访问 每个线程都有私有的工作内存或者称为本地内存 工作内存只存储该线程对共享变量的副本 线程不能直接操作主内存,只有先操作了工作内存之后才能写入主内存 并发编程的三个重要特性 原子性 指在一次的操作或者多次操作中

ABA问题

杀马特。学长 韩版系。学妹 提交于 2020-01-19 11:37:47
CAS算法实现一个重要前提需要取出内存中某时刻的数据,而在下时刻比较并替换,那么在这个时间差类会导致数据的变化。 比如说一个线程one从内存位置V中取出A,这时候另一个线程two也从内存中取出A,并且two进行了一些操作变成了B,然后two又将V位置的数据变成A,这时候线程one进行CAS操作发现内存中仍然是A,然后one操作成功。尽管线程one的CAS操作成功,但是不代表这个过程就是没有问题的。如果链表的头在变化了两次后恢复了原值,但是不代表链表就没有变化。因此前面提到的原子操作AtomicStampedReference/AtomicMarkableReference就很有用了。这允许一对变化的元素进行原子操作。 在运用CAS做Lock-Free操作中有一个经典的ABA问题: 线程1准备用CAS将变量的值由A替换为B,在此之前,线程2将变量的值由A替换为C,又由C替换为A,然后线程1执行CAS时发现变量的值仍然为A,所以CAS成功。但实际上这时的现场已经和最初不同了,尽管CAS成功,但可能存在潜藏的问题,例如下面的例子: 现有一个用单向链表实现的堆栈,栈顶为A,这时线程T1已经知道A.next为B,然后希望用CAS将栈顶替换为B: head.compareAndSet(A,B); 在T1执行上面这条指令之前,线程T2介入,将A、B出栈,再pushD、C、A,此时堆栈结构如下图

cas 4.X单点登录实战

拈花ヽ惹草 提交于 2020-01-18 19:21:15
使用工具 maven-3.3.9 cas-4.1.4 Tomcat-7.0.57-win-x64 cas-sample-java-webapp 一、Hello cas 1、下载Tomcat,解压;修改其server.xml,增加对SSL支持(具体百度): 1 <Connector SSLEnabled="true" acceptCount="100" clientAuth="false" 2 disableUploadTimeout="true" enableLookups="false" maxThreads="25" 3 port="8443" keystoreFile="G:/work/xxx/tomcat.keystore" keystorePass="YOUR PASSWORD HERE" 4 protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" 5 secure="true" sslProtocol="TLS" /> 1、从https://github.com/Jasig/cas/releases 下载cas-server对应的版本; 2、解压,使用maven命令mvn package对cas进行编译打包,这里可能会出现2个问题:   a.单元测试不通过==》尝试加上-Dmaven

CAS(乐观锁)

空扰寡人 提交于 2020-01-17 10:08:24
1.什么是CAS CAS(Compare And Swap)比较并替换,是线程并发运行时用到的一种技术; 2.CAS作用 乐观锁 3.其他锁机制缺点 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁。 锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的 上下文切换和调度延时,引起性能问题 。 (2)一个线程持有锁会导致其它所有需要此锁的 线程挂起 。 (3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致 优先级倒置 ,引起性能风险。 volatile是不错的机制,但是 volatile不能保证原子性。 因此对于同步最终还是要回到锁机制上来。 独占锁是一种悲观锁,synchronized就是一种独占锁,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。而另一个更加有效的锁就是乐观锁。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。 4.CAS实现 CAS需要三个指令,分别是内存位置(JAVA中的内存地址,V),旧的预期值(A)和新值(B)。CAS执行时,当且仅当V符合预期A的时候,新值更新V的值,否则不执行更新,但是最终都会返回V的旧值,上述的处理过程就是一个原子操作。 (图片来源网络) 比如:要将上图中的CPU1要将56更新为57

CAS实现单点登录

不问归期 提交于 2020-01-17 07:34:22
1.简介 SSO单点登录 在多个相互信任的系统中,用户只需要登录一次就可以访问其他受信任的系统。 新浪微博与新浪博客是相互信任的应用系统。 * 当用户首次访问新浪微博时,新浪微博识别到用户未登录,将请求重定向到认证中心,认证中心也识别到用户未登录,则将请求重定向到登录页。 * 当用户已登录新浪微博访问新浪博客时,新浪博客识别到用户未登录,将请求重定向到认证中心,认证中心识别到用户已登录,返回用户的身份,此时用户无需登录即可使用新浪博客。 * 只要多个系统使用同一套单点登录框架那么它们将是相互信任的。 CAS Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法, CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。 CAS 包含 CAS Client 和 CAS Server 两部分 CAS Client :要使用单点登录的Web应用,将与同组下的Web应用构成相互信任的关系,只需在web应用中添加CAS提供的 Listener 和 Filter 即可成为CAS Client ,其主要负责对客户端的请求进行登录校验、重定向和校验ticket工作。 CAS Server :主要负责对用户的用户名/密码进行认证,颁发票据等,需要单独的进行部署。 * 同组下的任意一个Web应用登录后其他应用都不需要登录即可使用。 2.CAS服务器搭建 2

CAS OAuth Authentication Using Google OAuth 2.0 and Using Yahoo OAuth 1.0

血红的双手。 提交于 2020-01-17 04:06:06
问题 I've successfully configured my CAS v. 3.5.2 to delegate authentication to Yahoo using OAuth 1.0 by following the instruction Jasig CAS Wiki at https://wiki.jasig.org/display/CASUM/Configuration+for+the+OAuth+client+support+in+CAS+server+version+%3E%3D+3.5.1 Now, I am trying to add the authentication with Google using OAuth 2.0. For that, I am using Google2Provider by updating the dependency on scribe-up to 1.3.1. But the following error is thrown upon accessing CAS login page: SEVERE: