手把手教你利用CAS实现单点登录

综合业务系统单点登录(SSO)解决方案一.SSO(Single Sign-on)原理SSO 分为Web-SSO和桌面SSO。

桌面SSO 体现在操作系统级别上。

Web-SSO体现在客户端,主要特点是:SSO 应用之间使用Web 协议( 如HTTPS) ,并且只有一个登录入口。

我们所讲的SSO,指Web SSO 。

SSO 的体系中,有下面三种角色:✧User(多个)✧Web应用(多个)✧SSO认证中心(一个)SSO 实现包含以下三个原则:●所有的登录都在 SSO 认证中心进行。

●SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是不是通过认证的用户。

●SSO 认证中心和所有的 Web 应用建立一种信任关系。

二.CAS 的基本原理CAS(Central Authentication Service) 是Yale 大学发起的构建Web SSO 的Java开源项目。

1.CAS术语解释SSO-Single Sign On,单点登录TGT-Ticket Granting Ticket,用户身份认证凭证票据ST-Service Ticket,服务许可凭证票据TGC-Ticket Granting Cookie,存放用户身份认证凭证票据的cookie2.CAS 的结构体系◆CAS ServerCAS Server 负责完成对用户信息的认证,需要单独部署,CAS Server 会处理用户名/ 密码等凭证(Credentials) 。

◆CAS ClientCAS Client部署在客户端,当有对本地Web 应用受保护资源的访问请求,并且需要对请求方进行身份认证,重定向到CAS Server 进行认证。

3.CAS 协议基础协议上图是一个基础的CAS 协议,CAS Client 以过滤器的方式保护Web 应用的受保护资源,过滤从客户端过来的每一个Web 请求,同时,CAS Client 会分析HTTP 请求中是否包请求Service Ticket( 上图中的Ticket) ,如果没有,则说明该用户是没有经过认证的,CAS Client 会重定向用户请求到CAS Server (Step 2 )。

Step 3 是用户认证过程,如果用户提供了正确的认证信息,CAS Server 会产生一个随机的Service Ticket ,会向User 发送一个Ticket granting cookie (TGC) 给User 的浏览器,并且重定向用户到CAS Client (附带刚才产生的Service Ticket),Step 5 和Step6 是CAS Client 和CAS Server 之间完成了一个对用户的身份核实,用Ticket 查到Username ,认证通过。

在该协议中,所有与CAS 的交互均采用SSL 协议,确保,ST 和TGC 的安全性。

协议工作过程中会有2 次重定向的过程,但是CAS Client 与CAS Server 之间进行Ticket 验证的过程对于用户是透明的。

4.CAS 如何实现SSO当用户访问Helloservice2再次被重定向到CAS Server 的时候,CAS Server 会主动获到这个TGC cookie ,然后做下面的事情:1)如果User 的持有TGC 且其还没失效,那么就走基础协议图的Step4 ,达到了SSO 的效果。

2)如果TGC 失效,那么用户还是要重新认证( 走基础协议图的Step3) 。

5.CAS服务器接口三.准备工作1.准备工具2.配置环境四.HTTPS验证配置CAS Server 是一套基于Java 实现的服务,该服务以一个Java Web Application 单独部署在与servlet2.3 兼容的Web 服务器上,另外,由于Client 与CAS Server 之间的交互采用Https 协议,因此部署CAS Server 的服务器还需要支持SSL 协议。

注:证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书;本教程由于是演示所以就自己用JDK自带的keytool工具生成证书;如果以后真正在产品环境中使用肯定要去证书提供机构去申请,证书认证一般都是由VeriSign认证1.生成服务端密钥文件登录服务器打开一个CMD窗口(开始菜单-> 运行输入cmd后回车)并切换到tomcat安装目录下(如:c:\tomcat-cas),执行如下命令:keytool -genkey -alias casserver -keypass demosso -keyalg RSA -keystorecasserver.keystore -validity 365执行后,可以看到tomcat安装目录下生成了一个casserver.keystore文件。

如下图:说明:-alias指定别名为casserver;-keyalg指定RSA算法;-keypass指定私钥密码;-keystore指定密钥文件名称为casserver.keystore;-validity指定有效期为365天。

另外提示的输入keystore密码应与-keypass指定的相同;您的名字与姓氏是CAS服务器使用的域名(不能是IP,也不能是localhost),其它项随意填。

注意:服务器上如果有多个JDK,请确认环境变量中的JDK路径为tomcat所使用的JDK,如果不在环境变量中,也可切换到指定JDK的bin目录下执行命令;提示的输入keystore 密码应与-keypass必须与指定的相同,否则后面tomcat启动会报IO异常(Cannot recover key)。

2.生成服务端证书根据以上生成的服务端的密钥文件可以导出服务端证书,执行以下命令:keytool -export -alias casserver -storepass demosso -file casserver.cer -keystore casserver.keystore执行后,可以看到tomcat安装目录下生成了一个casserver.cer文件。

如下图:说明:-alias指定别名为casserver;-storepass指定私钥为demosso;-file指定导出证书的文件名为casserver.cer;-keystore指定之前生成的密钥文件的文件名。

注意:-alias和-storepass必须为生成casserver.keystore密钥文件时所指定的别名和密码,否则证书导出失败,报如下错误:3.导入证书文件到cacerts 密钥库文件导入以上生成的服务端的证书文件到一个cacerts密钥库文件,执行以下命令:keytool -import -trustcacerts -alias casserver-storepass demosso -filecasserver.cer–keystore cacerts执行后,可以看到tomcat安装目录下生成了一个cacerts文件。

如下图:如果java的安装目录有空格,执行这句会报错,我的做法是先把jdk中的cacerts拷贝到根目录下,再执行export操作4.服务端Tomcat配置在制作完成密钥文件、证书文件、密钥库文件后即可进行服务端Tomcat的配置。

打开$CATALINA_HOME/conf/server.xml文件,注释掉如下代码段:<Connector port="80"protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443"/>并取消注释<Connectorport="8443" protocol="HTTP/1.1" SSLEnabled="true"…/>代码段,修改后如下:说明:port一般为8443或443,最常用的是443端口(https默认端口),这样https方式访问的时候可以不加端口号(如:https:///cas/login);keystoreFile 为tomcat 目录下的密钥文件;keystorePass为私钥密码;truststoreFile为生成的信任文件,如果此处不指定则默认为$JAVA_HOME/jre/lib/security/cacerts文件;其它属性默认即可。

5.生成客户端密钥库文件单向认证的客户端配置只需生成客户端信任文件caserts即可。

首先将服务端生成的证书文件(之前生成的casserver.cer文件)复制到$JAVA_HOME/jre/lib/security下,然后打开CMD窗口切换到$JAVA_HOME/jre/lib/security下并执行命令:keytool -import -trustcacerts -alias casclient-storepass ssoclient -file casserver.cer-keystore cacerts执行后,可以看到$JAVA_HOME/jre/lib/security目录下生成了一个cacerts文件。

如下图:到这里 SSL协议配置完成了。

如果显示密码错误,请使用 changeit ,这个是jdk默认的证书密码五.CAS验证服务器配置1. 安装CAS服务器1.解压cas-server-3.5.2.1-release.zip到磁盘(我的路径为D:\cas-server-3.5.2.1),进入D:\cas-erver-3.5.2.1\modules文件夹下,把cas-server-webapp-3.5.2.1.war拷贝到Tomcat安装目录的(我的路径为D:\apache-tomcat-7.0.52)webapps文件夹下。

为了方便在浏览器中浏览,把cas-server-webapp-3.5.2.1.war文件名修改为cas.war。

2.运行Tomcat。

在浏览器中输入http://10.12.21.45:8080/cas,显示登录界面。

输入用户名和密码(用户名和密码相等即可),登录成功。

这样最简单的CAS验证服务器搭配成功。

Modules文件夹截图2. 配置数据库验证方式1、复制D:\cas-server-3.5.2.1\modules下面cas-server-support-jdbc-3.5.2.1.jar到D:\apache-tomcat-7.0.52\webapps\cas\WEB-INF\lib下。

数据库为Oracle,因此把Oracle驱动包也复制到lib文件夹下。

合集下载

CAS_SSO单点登录实例详细步骤

CAS_SSO单点登录实例详细步骤

CAS SSO单点登录实例详细步骤原创作者:孙俊财第一步1、用keytool生成证书:命令:keytool -genkey -alias sjc -keyalg RSA -keysto re c:/store/mykey说明:这里-alias sjc 是表示生成的这个证书的别名叫sjc,-keyalg RSA 指的是采用的RSA算法,-keystore c:/store/mykey是指生成的证书存储的位置。

回车后会提示你输入keystore password,这可以自己定(这里输入sunjuncai,下面配tomcat时要用的),然后是一些个人信息及组织信息,可以轻松搞定。

注意:密码输入后,会让你输入其他信息,记得这里第一个姓名必须是服务器的域名这里我输入的是完整计算机名称:gaofeng.nmc.hamcc这里要注意如果不这样写就会报如下异常:java.io.IOException: HTTPS hostname wrong: should be <localhost>实战:C:\Documents and Settings\wangyoushi8>keytool -genkey -alias sjc -keyalg RSA -keystorec:/store/mykey输入keystore密码:sunjuncai您的名字与姓氏是什么?[Unknown]:gaofeng.nmc.hamcc您的组织单位名称是什么?[Unknown]:上海神洲数港您的组织名称是什么?[Unknown]:网络优化您所在的城市或区域名称是什么?[Unknown]:郑州您所在的州或省份名称是什么?[Unknown]:河南该单位的两字母国家代码是什么[Unknown]:ZHCN= gaofeng.nmc.hamcc, OU=上海神洲数港, O=网络优化, L=郑州, ST=河南, C=ZH 正确吗?[否]:y输入<sjc>的主密码(如果和keystore 密码相同,按回车):2、创建证书后,就导出证书:命令:keytool -export -file c:/store/server.crt -alias sjc -keystore c:/store/mykey说明:从c:/store/mykey里取出证书入到c:/store/下,如果没有指定,就是存放在目录下C:\Documents and Settings\用户目录名\实战:C:\Documents and Settings\wangyoushi8>keytool -export -file c:/store/server.crt -alias sjc-keystore C:/store/mykey输入keystore密码:sunjuncai保存在文件中的认证<c:/store/server.crt>3、为客户端的JVM导入密钥:命令:keytool -import -keystore D:/jdk1.5.0_12/jre/lib/security/cacerts -file c:/store/server.crt -alias sjc说明:注意:输入密码时密码为"changeit",这是默认密码.特别说明:这个D:/jdk1.5.0_12/jre/lib/security/cacerts是指JDK的JRE路径下的lib目录.至此,第一步完成。

单点登录CAS与LDAP整合的实现

单点登录CAS与LDAP整合的实现

单点登录CAS与LDAP整合的实现单点登录(Single Sign-On,SSO)是一种身份验证和访问控制机制,允许用户使用一组凭据(如用户名和密码)登录到一个应用程序,然后在登录后访问其他应用程序而无需再次提供凭据。

这种机制的实现需要集成不同的身份验证系统,例如,CAS(Central Authentication Service)与LDAP(Lightweight Directory Access Protocol)。

CAS是一种基于Web的身份验证协议,它提供了一种单点登录解决方案,允许用户在一次登录后访问多个Web应用程序,并且不需要再次输入凭据。

CAS通过提供一个认证服务器来实现这一功能,该服务器负责验证用户的凭据,并生成一个票据(Ticket)以表示用户的身份。

LDAP是一种用于访问和维护分布式目录信息服务(Directory Information Services)的协议。

目录服务用于存储和组织用户和组的信息,包括用户名、密码和其他属性。

LDAP提供了一种标准化的方式来查找、添加、修改和删除目录条目,提供了对用户身份信息的集中存储和访问。

要将CAS和LDAP整合,首先需要配置CAS服务器以使用LDAP作为其用户存储和验证机制。

下面是实现此集成的步骤:1. 配置LDAP服务器:首先,需要在LDAP服务器上创建一个目录以存储用户和组的信息。

可以使用开源的LDAP服务器,如OpenLDAP或Microsoft的Active Directory。

2.配置LDAP属性映射:CAS需要将LDAP中的用户属性映射到CAS的用户模型中。

这些属性包括用户名、密码、姓名、角色等。

需要根据LDAP服务器的架构和CAS的用户模型进行正确的属性映射。

3.配置LDAP身份验证器:CAS使用一个或多个身份验证器来验证用户的凭据。

应该配置一个LDAP身份验证器来使用LDAP服务器进行用户身份验证。

4.配置CAS服务器:在CAS服务器上,需要配置CAS以使用LDAP身份验证器进行用户身份验证。

基于CAS的单点登录系统设计与实现-bd

基于CAS的单点登录系统设计与实现-bd

系统
用户 管理员
• 应用系统对认证、访问控制的 安全措施不完善,影响整个安 全体系
未来需求 我们需要这样一个协作平台
统一的信息资源认证访问入口 统一的权限控制 易用性、安全性、可靠性
最少化改动现有的业务系统
同一个用户,不 应该记忆多套用户名 密码
解决方案 解决之道----统一认证管理
信息 岗位1
基于CAS的单点登录系统设计与实现
信息中心
目录
现有问题分析 解决方案 总结
现状分析
面临的问题:
用户
• 记忆针对多个应用的多个凭证 • 访问多个系统需要多次登录
管理员
• 每个应用都对应一套用户管理, 针对一个用户,无论增/删/改, 都需要多次操作
• 每个应用都有不同的权限管理, 复杂的操作带来安全隐患 • 各应用信息资源不共享,形成 信息孤岛
方案实现 核心技术
改进认证服务 器程序的认证 模式
AD
SSO
改进客户端认证:研 究院内部所有计算机 终端建立统一的AD域
CAS
Kerberos
应用系统
应用系统直接获取本地 用户的域账户,然后将 该账户传递给CAS,通 过CAS与AD进行信息正 确性的验证
方案总结
基于CAS的单点登录系统
基于AD用户 权限管理平台, 从根本上解决 权限分配问题
单点登陆
•授权管理 •身份认证 应用
数据
单点登陆
岗位2
单点登陆
权限管理员
岗位3
方案验证 解决方案的验证
KMS
以KMS系统为切入点, 通过对KMS系统的二 采用CAS来搭建单 次开发,实现KMS系 点登录的服务器架 统的单点登录
CAS

CAS单点登录配置全过程

CAS单点登录配置全过程

CAS配置全过程软件工具:1.cas-server-3.3.5-release.zip(CAS服务端)2.cas-client-3.1.10-release.zip(CAS客户端)3.apache-tomcat-7.0.40mons-dbcp-all-1.3-r699049.jar5.mysql-connector-java-5.1.18-bin.jar6.cas-server-jdbc-3.0.5-rc2.jar写在前面的话此配置是根据当前系统,当前的版本,仅供参考,如果有什么其他的问题可以一起研究。

第一节:先走通技术障碍第一步:环境部署1.在Tomcat 根目录下创建一个cas目录。

2.下载CAS服务器并解压,打开cas-server-3.3.5\modules,将cas-server-webapp-3.3.5.war复制到刚刚在Tomcat创建的cas目录下,并重命名为ROOT.war3.修改host文件(C:\Windows\System32\drivers\etc)添加127.0.0.1 注意:如果想在一台PC机上模拟这个单点登录,就必须域名重定向,如果是多台PC机,可以不配置此项,下文有用到,可以用相应PC机的IP代替4.修改Tomcat文件下的server.xml(apache-tomcat-7.0.40\conf\server.xml)添加内容:<Host name="" appBase="cas"unpackWARs="true" autoDeploy="true"></Host>5.启动Tomcat服务,查看信息,(如果有报错,可以根据信息查找错误),打开浏览器,输入:8080如果出现以下界面,则CAS服务端配置成功。

注:这个是最简单的CAS服务,只要输入的用户名跟密码一样,就可以正常登陆,在我们实际开发中,这个验证因为跟数据库作比较,接下来,我们就配置数据库校验。

springboot1.5.4集成shiro+cas,实现单点登录和权限控制

springboot1.5.4集成shiro+cas,实现单点登录和权限控制

springboot1.5.4集成shiro+cas,实现单点登录和权限控制1.添加maven依赖(先安装好cas-server-3.5.2,安装步骤请查看本⽂参考⽂章)<dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.2.4</version></dependency><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-ehcache</artifactId><version>1.2.4</version></dependency><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-cas</artifactId><version>1.2.4</version></dependency>2.启动累添加@ServletComponentScan注解@SpringBootApplicationpublic class Application {/*** main function* @param args params*/public static void main(String[] args){ConfigurableApplicationContext context = SpringApplication.run(Application.class,args);//test if a xml bean inject into springcontext successfulUser user = (User)context.getBean("user1");System.out.println(JSONObject.toJSONString(user));}}3.配置shiro+caspackage com.hdwang.config.shiroCas;import erDao;import org.apache.shiro.cache.ehcache.EhCacheManager;import org.apache.shiro.cas.CasFilter;import org.apache.shiro.cas.CasSubjectFactory;import org.apache.shiro.spring.LifecycleBeanPostProcessor;import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;import org.apache.shiro.spring.web.ShiroFilterFactoryBean;import org.apache.shiro.web.filter.authc.LogoutFilter;import org.apache.shiro.web.mgt.DefaultWebSecurityManager;import org.jasig.cas.client.session.SingleSignOutFilter;import org.jasig.cas.client.session.SingleSignOutHttpSessionListener;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.Ordered;import org.springframework.web.filter.DelegatingFilterProxy;import javax.servlet.Filter;import javax.servlet.annotation.WebListener;import java.util.HashMap;import java.util.LinkedHashMap;import java.util.Map;/*** Created by hdwang on 2017/6/20.* shiro+cas 配置*/@Configurationpublic class ShiroCasConfiguration {private static final Logger logger = LoggerFactory.getLogger(ShiroCasConfiguration.class);// cas server地址public static final String casServerUrlPrefix = "https://localhost:8443/cas";// Cas登录页⾯地址public static final String casLoginUrl = casServerUrlPrefix + "/login";// Cas登出页⾯地址public static final String casLogoutUrl = casServerUrlPrefix + "/logout";// 当前⼯程对外提供的服务地址public static final String shiroServerUrlPrefix = "http://localhost:8081";// casFilter UrlPatternpublic static final String casFilterUrlPattern = "/cas";// 登录地址public static final String loginUrl = casLoginUrl + "?service=" + shiroServerUrlPrefix + casFilterUrlPattern;// 登出地址public static final String logoutUrl = casLogoutUrl+"?service="+shiroServerUrlPrefix;// 登录成功地址public static final String loginSuccessUrl = "/home";// 权限认证失败跳转地址public static final String unauthorizedUrl = "/error/403.html";@Beanpublic EhCacheManager getEhCacheManager() {EhCacheManager em = new EhCacheManager();em.setCacheManagerConfigFile("classpath:ehcache-shiro.xml");return em;}@Bean(name = "myShiroCasRealm")//realm.setCasServerUrlPrefix(ShiroCasConfiguration.casServerUrlPrefix);// 客户端回调地址//realm.setCasService(ShiroCasConfiguration.shiroServerUrlPrefix + ShiroCasConfiguration.casFilterUrlPattern);return realm;}/*** 注册单点登出listener* @return*/@Beanpublic ServletListenerRegistrationBean singleSignOutHttpSessionListener(){ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean();bean.setListener(new SingleSignOutHttpSessionListener());// bean.setName(""); //默认为bean namebean.setEnabled(true);//bean.setOrder(Ordered.HIGHEST_PRECEDENCE); //设置优先级return bean;}/*** 注册单点登出filter* @return*/@Beanpublic FilterRegistrationBean singleSignOutFilter(){FilterRegistrationBean bean = new FilterRegistrationBean();bean.setName("singleSignOutFilter");bean.setFilter(new SingleSignOutFilter());bean.addUrlPatterns("/*");bean.setEnabled(true);//bean.setOrder(Ordered.HIGHEST_PRECEDENCE);return bean;}/*** 注册DelegatingFilterProxy(Shiro)** @return* @author SHANHY* @create 2016年1⽉13⽇*/@Beanpublic FilterRegistrationBean delegatingFilterProxy() {FilterRegistrationBean filterRegistration = new FilterRegistrationBean();filterRegistration.setFilter(new DelegatingFilterProxy("shiroFilter"));// 该值缺省为false,表⽰⽣命周期由SpringApplicationContext管理,设置为true则表⽰由ServletContainer管理filterRegistration.addInitParameter("targetFilterLifecycle", "true");filterRegistration.setEnabled(true);filterRegistration.addUrlPatterns("/*");return filterRegistration;}@Bean(name = "lifecycleBeanPostProcessor")public LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {return new LifecycleBeanPostProcessor();}@Beanpublic DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {DefaultAdvisorAutoProxyCreator daap = new DefaultAdvisorAutoProxyCreator();daap.setProxyTargetClass(true);return daap;}@Bean(name = "securityManager")public DefaultWebSecurityManager getDefaultWebSecurityManager(MyShiroCasRealm myShiroCasRealm) {DefaultWebSecurityManager dwsm = new DefaultWebSecurityManager();dwsm.setRealm(myShiroCasRealm);// <!-- ⽤户授权/认证信息Cache, 采⽤EhCache 缓存 -->dwsm.setCacheManager(getEhCacheManager());// 指定 SubjectFactorydwsm.setSubjectFactory(new CasSubjectFactory());return dwsm;}@Beanpublic AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) { AuthorizationAttributeSourceAdvisor aasa = new AuthorizationAttributeSourceAdvisor();aasa.setSecurityManager(securityManager);return aasa;}/*** CAS过滤器** @return* @author SHANHY* @create 2016年1⽉17⽇*/@Bean(name = "casFilter")public CasFilter getCasFilter() {CasFilter casFilter = new CasFilter();casFilter.setName("casFilter");casFilter.setEnabled(true);// 登录失败后跳转的URL,也就是 Shiro 执⾏ CasRealm 的 doGetAuthenticationInfo ⽅法向CasServer验证tiketcasFilter.setFailureUrl(loginUrl);// 我们选择认证失败后再打开登录页⾯return casFilter;}/*** ShiroFilter<br/>* 注意这⾥参数中的 StudentService 和 IScoreDao 只是⼀个例⼦,因为我们在这⾥可以⽤这样的⽅式获取到相关访问数据库的对象, * 然后读取数据库相关配置,配置到 shiroFilterFactoryBean 的访问规则中。

搭建CAS单点登录服务器

搭建CAS单点登录服务器

搭建CAS单点登录服务器 最近公司的⼀个项⽬需要⽤到单点登录的功能,之前对单点登录了解得不多。

于是⽹上找了下单点登录的解决⽅案,发现CAS是个不错的解决⽅案。

于是搭个环境测试了⼀下。

这⾥记录下测试的详细步骤。

官⽹: Cas Server下载: Cas Client下载: 测试环境: jdk:java version "1.8.0_60" tomcat:apache-tomcat-7.0.65 mysql:mysql5.5.40 CAS Server:cas-server-4.0.0-release.zip CAS Client:cas-client-3.1.12-release.zip 此教程是在jdk和tomcat成功安装的基础上完成,⾄于jdk和tomcat的安装⼤家可以⽹上找找资料。

好吧,下⾯⼊正题。

⼀、⽣成证书 1、⽣成证书: keytool -genkey -alias castest -keyalg RSA -keystore F:/keys/castest ⽣成⼀个别名为castest的证书。

此处需要特别注意⼝令(后续导⼊导出证书、CAS服务器端均要⽤到此⼝类)和“名字与姓⽒”(为CAS跳转域名,否则会报错) 2、导出证书: keytool -export -file F:/keys/castest.crt -alias castest -keystore F:/keys/castest 3、将证书导⼊到客户端JRE中(注意、是导⼊JRE中),如果security中已经存在cacerts,需要先将其删除。

keytool -import -keystore "D:\Program Files\Java\jdk1.8.0_60\jre\lib\security\cacerts" -file F:/keys/castest.crt -alias castest ⼆、配置服务器端 1、从/cas/上下载cas服务器端cas-server-4.0.0-release.zip,在modules⽬录下找到cas-server-webapp-4.0.0.war,将其复制到%TOMCAT_HOME%\webapps下,并将名称改为cas.war 2、修改%TOMCAT_HOME%\conf\server.xml⽂件,去掉此⽂件83到93⾏之间的注释,修改为:<Connector SSLEnabled="true" clientAuth="false" keystoreFile="F:/keys/castest" <!—⽣成证书时的路径,证书名-->keystorePass="castest" <!—证书密码-->maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11Protocol" scheme="https" secure="true" sslProtocol="TLS"/> 3、测试:https://localhost:8443/ 点击继续浏览此⽹页 如果此时可以正常访问,说明证书安装成功 https://localhost:8443/cas/login,出现 输⼊账号和密码 casuser Mellon 此时说明服务器端已经配置成功。

CAS-单点登陆配置-resin客户端

CAS 单点登陆配置-Resin客户端准备工作1、认证中心机器。

XXX192.168.0.177 域名 aabbb2、需要做认证的服务器 XXX 192.168.0.105 域名 修改 177 和105 机器的hosts (system32 搜索一下)177机器修改:hosts192.168.0.177 aabbb192.168.0.105 bbbbb105机器修改:hosts192.168.0.177 aabbb192.168.0.105 bbbbb下载 casbbb:///products/cas/本例使用的是cas-server-3.0.5.zipcas-client-java-2.1.1.zipssl 认证服务器 tocat5.5客户端resin-2.0.3认证中心修改与配置机器1771、生成keystore 文件命令行模式下:keytool -genkey -alias tomcat -vali dity 365 -keyalg RSA -keystore D:\tomcat.keystore 问姓名时输入:aabbb密码infosea2、配置tomcat5 的ssl 端口:conf\server.conf<Connector port="8443" maxbbbHeaderSize="8192"maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" disableUploadTimeout="true"acceptCount="100" scheme="bbbs" secure="true"clientAuth="false" sslProtocol="TLS"keystoreFile="d:/tomcat.keystore" keystorePass="infosea" />访问 localhost:8443 可以访问,说明tomcat5 ssl 配置成功。

SSO之CAS单点登录实例演示

SSO之CAS单点登录实例演⽰本⽂⽬录:⼀、概述⼆、演⽰环境三、JDK安装配置四、安全证书配置五、部署CAS-Server相关的Tomcat六、部署CAS-Client相关的Tomcat七、测试验证SSO⼀、概述此⽂的⽬的就是为了帮助初步接触SSO和CAS 的⼈员提供⼀个⼊门指南,⼀步⼀步演⽰如何实现基于CAS的单点登录。

⼆、演⽰环境本⽂演⽰过程在同⼀个机器上的(也可以在三台实体机器或者三个的虚拟机上),环境如下:windows7 64位,主机名称:michael-pcJDK 1.6.0_18Tomcat 6.0.29CAS-server-3.4.11、CAS-client-3.2.1根据演⽰需求,⽤修改hosts ⽂件的⽅法添加域名最简单⽅便(这个⾮常重要),在⽂件 C:\Windows\System32\drivers\etc\hosts ⽂件中添加三条1 2 3127.0.0.1 127.0.0.1 127.0.0.1 =>> 对应部署cas server的tomcat,这个虚拟域名还⽤于证书⽣成 =>> 对应部署app1 的tomcat =>> 对应部署app2 的tomcat三、JDK安装配置这个详细过程就不在描述,如果是免安装版的,确保环境变量配置正确。

本机环境变量:JAVA_HOME=D:\jdk,如果看到以下信息则表⽰安装成功:四、安全证书配置4.1. ⽣成证书:1keytool -genkey -alias ssodemo -keyalg RSA -keysize 1024 -keypass michaelpwd -validity 365 -keystore g:\sso\ssodemo.keystore -storepass michaelpwdps:截图中需要输⼊的姓名和上⾯hosts⽂件中配置的⼀致;keypass 和 storepass 两个密码要⼀致,否则下⾯tomcat 配置https 访问失败;4.2.导出证书:1keytool -export -alias ssodemo -keystore g:\sso\ssodemo.keystore -file g:\sso\ssodemo.crt -storepass michaelpwd1keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file g:\sso\ssodemo.crt -alias ssodemops:该命令中输⼊的密码和上⾯输⼊的不是同⼀个密码;如果是多台机器演⽰,需要在每⼀台客户端导⼊该证书。

CAS单点登录系统实操指南

CAS单点登录系统实操指南CAS单点登录系统实操指南 (1)1. CAS单点登录介绍 (3)1.1. 什么是单点登录 (3)1.2. 什么是CAS (3)2. CAS服务端部署及配置 (5)2.1. 基础部署配置 (5)2.2. 去除https认证 (7)2.3. 登录数据源设置 (8)2.3.1 密码未加密处理 (8)2.3.2 密码MD5加密配置 (9)2.4. 登录页面的极简改造 (10)3. CAS客户端搭建 (11)3.1. 搭建工程并添加依赖 (11)3.2. 单点登录配置 (12)3.3. 单点登出配置 (14)3.3.1 未重定向登出 (14)3.3.2 重定向地址登出 (15)3.4. 获取登录用户信息配置 (15)4. CAS客户端与SpringSecurity集成 (16)4.1. 搭建工程并添加依赖 (16)4.2. 修改和创建配置文件 (18)4.3. 创建Spring-security认证脚本 (22)4.4. 获取登录名 (22)1. CAS单点登录介绍1.1. 什么是单点登录单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一。

SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

我们目前的系统存在诸多子系统,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的session是无法解决的,我们需要使用相关的单点登录技术来解决。

1.2. 什么是CASCAS 是Yale 大学发起的一个开源项目,旨在为Web 应用系统提供一种可靠的单点登录方法,CAS 在2004 年12 月正式成为JA-SIG 的一个项目。

CAS 具有以下特点:【1】开源的企业级单点登录解决方案。

【2】CAS Server 为需要独立部署的Web 应用。

【3】CAS Client 支持非常多的客户端(这里指单点登录系统中的各个Web 应用),包括Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

CAS整合LDAP实现单点登录学习笔记

SJTUCrushing Blow ——CAS整合LDAP实现单点登录学习笔记Solomon leo********************8/15/2010目录Contents目录 (1)1单点登录 (2)2 CAS (3)2.1 JA-SIG(CAS)的设计愿景 (3)2.2 CAS1.0服务架构实现 (3)2.3 CAS服务的具体实现 (4)2.4代理认证Proxy Authentication (6)2.5 CAS2.0代理认证流程 (6)2.6 CAS2.0凭证 (7)3 LDAP (8)4 CAS整合LDAP配置过程 (9)4.1说明 (9)4.1 LDAP安装(A) (9)4.2 配置服务器(A) (10)4.3 配置客户端(B,业务服务器) (15)4.4关于CASTestClient和cas的说明 (16)5参考目录 (19)1单点登录什么是SSO(Single Sign On)单点登录?所谓单点登录是指基于用户/会话认证的一个过程,用户只需一次性提供凭证(仅一次登录),就可以访问多个应用。

目前单点登录主要基于Web的多种应用程序,即通过浏览器实现对多个B/S架构应用的统一账户认证。

2 CAS2.1 JA-SIG(CAS)的设计愿景CAS(Central Authentication Service – 中心认证服务)的目的就是使分布在一个企业内部各个异构系统的认证工作集中在一起,通过一个公用的认证系统统一管理和验证用户的身份。

在CAS上认证的用户将获得CAS颁发的一个证书,使用这个证书,用户可以在承认CAS证书的各个系统上自由穿梭访问,不需要再次的登录认证。

打个比方:对于加入欧盟的国家而言,在他们国家中的公民可以凭借着自己的身份证,在整个欧洲旅行,不用签证。

对于企业内部系统而言,CAS就是这个颁发欧盟认证的系统,其它系统都是加入欧盟的国家,它们要共同遵守和承认CAS的认证规则。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档