软件工程-使用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目录.至此,第一步完成。
springboot集成cas5.3实现sso单点登录详细流程
springboot集成cas5.3实现sso单点登录详细流程什么是单点登录?单点登录(Single Sign On),简称为 SSO,是⽬前⽐较流⾏的企业业务整合的解决⽅案之⼀。
SSO的定义是在多个应⽤系统中,⽤户只需要登录⼀次就可以访问所有相互信任的应⽤系统。
我们⽬前的系统存在诸多⼦系统,⽽这些⼦系统是分别部署在不同的服务器中,那么使⽤传统⽅式的session是⽆法解决的,我们需要使⽤相关的单点登录技术来解决。
SSO单点登录访问流程主要有以下步骤:访问服务:SSO客户端发送请求访问应⽤系统提供的服务资源。
定向认证:SSO客户端会重定向⽤户请求到SSO服务器。
⽤户认证:⽤户⾝份认证。
发放票据:SSO服务器会产⽣⼀个随机的Service Ticket。
验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务。
传输⽤户信息:SSO服务器验证票据通过后,传输⽤户认证结果信息给客户端。
(作者补充:其实简单来说,cas就是中央认证服务,就是单点登录,单点登录简称为sso!)cas服务端部署mvn package3、把target下⽣成的war包重命名为cas.war放到tomcat下4、启动tomcat5、找到解压的⽂件由于cas默认使⽤的是基于https协议,需要改为兼容使⽤http协议,打开对应你的⽬录⽂件:D:\tomcat8\webapps\cas\WEB-INF\classes\application.properties修改application.properties⽂件,添加下⾯配置,使⽤http#使⽤http协议cas.tgc.secure=falsecas.serviceRegistry.initFromJson=true#由于https协议默认使⽤的端⼝为8443,还需我们修改为tomcat的8080端⼝server.port=8080修改HTTPSandIMAPS-10000001.json⽂件D:\tomcat8\webapps\cas\WEB-INF\classes\services⽬录下的HTTPSandIMAPS-10000001.json把原来的serviceId内容改成如下"serviceId" : "^(https|http|imaps)://.*",兼容http修改完毕。
SSO、单点登录、集成CAS、OAuth2
SSO、单点登录、集成CAS、OAuth2JeeSite 已经默认集成了两种单点登录方式(Single Sign On):1、SSO(简单登录)接口,实现快速登录系统。
2、与 Apereo CAS 服务器集成,快速实现系统登录(个人版)并实现了第三方登录 OAuth2,如:微信、QQ、支付宝、等等简单登录接口系统登录:1、设置application.yml(v4.0.x:jeesite.yml)的shiro.sso.secretKey 快速登录安全Key,若不设置将无法使用该接口。
shiro:# 简单 SSO 登录相关配置sso:# 如果启用/sso/{username}/{token}单点登录,请修改此安全key并与单点登录系统key一致。
secretKey: thinkgem# 是否加密单点登录安全KeyencryptKey: true2、举例调用地址如下,调用完成后自动登录系统:http://localhost/project/sso/{username}/{token}?url=/sys/us er/list?p1=v1%26p2=v2&relogin=true•username: 登录名,数据库中的 login_code 字段。
•token: 登录令牌,根据yml里配置的登录安全Key生产的密码。
•url: 登录之后要跳转的地址,如果url中携带参数,请使用转义字符,如“&”号,使用“%26”转义。
token生成方式:String username = "system"; // 登录系统名String secretKey = "thinkgem"; // yml 中设置的shiro.sso.secretKey 参数值。
String token = Md5Utils.md5(secretKey + username +DateUtils.getDate("yyyyMMdd"));// 如果 shiro.sso.encryptKey 为 true,则 secretKey 会自动加密。
基于CAS协议单点登录系统的改进与实现
基于CAS协议单点登录系统的改进与实现作者:赵侃侃戴佳男来源:《计算机与网络》2020年第09期摘要:单点登录(SSO)技术已成为现今Web应用系统广泛采用的集中认证授权技术,在比较分析了4种典型的单点登录实现方案的基础上,选择并改进了基于CAS协议的单点登录系统。
由于前后端分离开发部署的Web应用不能直接使用CAS协议的单点登录系统,改进并重新封装了基于CAS协议的单点登录系统客户端插件,使之既能支持前后端分离开发部署的Web应用,也能支持前后端集中开发部署的Web应用直接使用而无需应用修改代码,实现了应用的无侵入性集成CAS協议的单点登录系统功能。
关键词:单点登录;Web应用;CAS协议中图分类号:TP393文献标志码:A文章编号:1008-1739(2020)09-68-40引言随着B/S架构的Web应用系统越来越广泛地普及和发展,“一次验证,多次登陆”的单点登录技术[1]也应运而生。
单点登录技术是用户只登录一次,就可以访问所有接入单点登录服务的应用系统的技术。
通过建立一个集中的认证服务器,并在应用系统中配置请求拦截器等方式验证用户的登录状态并控制请求的跳转功能,从而实现单点登录功能。
单点登录功能不需要用户记忆各大应用系统的不同的用户名和密码,减少了用户在多个系统间登录的操作。
另外,单点登录技术抽取了用户认证和授权功能,第三方接入单点登录服务的Web应用系统将认证授权功能交由单点登录系统处理,这样有助于第三方应用更加专注自身业务的设计和开发。
对于多套应用系统的企业来说,单点登录功能也被很多企业,尤其是国外的相关企业采用,这是作为应用系统设计初期就必须具备的基本功能[2]。
1常用单点登录方案目前常用的几种单点登录协议有基于SAML协议的单点登录方案[3]、基于Kerberos身份认证机制的单点登录方案[4]、基于Passport协议的单点登录方案[5]及基于CAS协议的单点登录方案[6]。
SAML是一种基于XML标准的安全断言标记语言,用于安全传输声明。
CAS实现SSO单点登录原理
CAS实现SSO单点登录原理CAS(Central Authentication Service)是一种用于实现SSO (Single Sign-On)单点登录的开源协议和软件系统。
它提供了一种安全的方式,使用户只需一次登录,即可访问多个互联网应用程序。
CAS的工作原理可以分为以下几个步骤:1.用户访问应用程序A,并尚未通过CAS进行认证。
应用程序A会将用户重定向到CAS服务器,请求用户认证。
2. 用户输入用户名和密码,并提交给CAS服务器进行认证。
CAS服务器会验证用户的身份,并在成功通过认证后,生成用户唯一的票据(Ticket)。
3.CAS服务器返回该票据给应用程序A,应用程序A将该票据转发给用户浏览器。
4.用户浏览器将该票据作为参数,重定向至CAS服务器,并请求票据验证。
5.CAS服务器根据票据验证的结果,返回成功或失败的认证结果给用户浏览器。
6.用户浏览器在收到认证结果后,将结果传递给应用程序A。
7.应用程序A根据认证结果,判断用户是否通过认证。
如果通过认证,则允许用户访问应用程序A的资源。
以上是CAS的基本工作流程。
在实际应用中,还可以结合其他技术来增强CAS的功能和安全性,例如使用SSL(Secure Sockets Layer)加密通信,确保用户登录过程中的数据传输安全;使用LDAP(LightweightDirectory Access Protocol)或数据库等存储用户账户信息;使用SPNEGO(Simple and Protected GSSAPI Negotiation Mechanism)协议实现单点登录与Windows集成等。
CAS的优点包括:1.单点登录:用户只需一次登录,即可访问多个应用程序,提高了用户体验和工作效率。
2.安全性:CAS通过票据来验证用户的身份,避免了用户密码在多个应用程序之间传递,提高了安全性。
3.可扩展性:CAS是基于开放标准的协议,可以与各种技术和系统集成,非常灵活和可扩展。
单点登录原理及CAS实现【面试+工作】
单点登录原理及CAS实现【面试+工作】单点登录原理及实现sso【面试+工作】WEB的登录那些事说道账户登录和注册,其实我们每天都在亲身感受着,像微博、知乎还有简书等等。
我们总是需要定期的去重新登录一下,对于这种认证机制,我们都能说出来两个名词,Cookie、Session。
的确没错,Cookie和Session是实现这一切的核心。
为什么会有Cookie和Session?区别是什么?引入这两个概念的根本原因是因为Http协议是无状态的,也就是说它不能建立起多次请求之间的关系。
所以需要引入一个能有浏览器或服务器保存的一个上下文状态,也就是Cookie和Session。
说到底Session的实现是依赖于Cookie的,因为Cookie是真正的由浏览器保存的状态,Session是利用了JSessionID。
在我看来其实两者有差异,但是根本的依赖是一样的。
Cookie也是有生命周期的,像Session级别或者有一定“寿命”的Cookie。
一切是由浏览器去维护的。
常见的跨域登录问题之前楼主主要是做账户和Passport这方面的工作,其实在跨域这也是碰见了一些问题。
对于同一个根域下的登录问题如果我们的站点有不止一个业务,那么他们可能部署在不同的机器上,也往往需要不同的域名进行区分。
但是所有的业务又都是依赖于一套账户体系,那么我们这时候需要通过一次登录解决所有站点的登录问题,那么我们这个时候可以使用一个最笨的方法:那就是一次登录成功,将Cookie写到根域下,那么这样所有的站点就能实现,同一个根域下的Cookie共享,自然实现了”单点登录“。
对于多个根域下的登录问题如果是多个根域名,那么这种情况下上面的机制就不能实现“单点登录”了。
因为之所以上面可以实现“单点登录”的效果。
是因为浏览器和Http协议的支持。
但是对于跨根域的站点之间进行Cookie 的共享是比较复杂的。
方法1:登录成功之后将Cookie回写到多个域名下。
SSO之CAS单点登录详细搭建
SSO之CAS单点登录详细搭建:环境说明:同一个机器上环境如下:操作系统:windows7 64位JDK版本:1.7.0_80web容器版本:apache-tomcat-7.0.70 64位服务端:cas-3.5.2.1.zip服务端现在地址:https:///apereo/cas/archive/v4.2.3.zip客户端:cas-client-3.3.3-release.zip客户端下载地址:/cas-clients/eclipse版本:eclipse-jee-luna-SR2-win32-x86_64.zip1、将cas-3.5.2.1 cas-client-3.3.3 标准maven工程导入eclipse 打包编译;2、修改本机C:\Windows\System32\drivers\etc\hosts (CAS单点登录系统是基于JAVA安全证书的https 访问,要使用CAS单点登录必须要配置域名, cas是不能通过ip访问的.)附件-->记事本管理员权限编辑hosts文件,加入如下三行代码后保存。
127.0.0.1 127.0.0.1 127.0.0.1 解释: =>> 对应部署cas server的tomcat,这个虚拟域名还用于服务端证书生成 =>> 对应部署client1客户端应用的tomcat =>> 对应部署client2客户端应用的tomcat3、安全证书配置3.1、管理员模式打开cmd命令窗口,生成证书,在cmd窗口输入以下命令:C:\Users\Administrator>keytool -genkey -alias ssoflyer -keyalg RSA -keysize 1024 -keypass flyer2016 -validity 365 -keystore D:\app\flyer.keystore -storepass flyer2016说明:-alias自定义的别名;-keypass指定证书密钥库的密码;-storepass和前面keypass密码相同,否则下面tomcat配置https会访问失败;-keystore指定证书的位置,例如:D:\app\目录,密钥库名称可以自定义,例如:flyer.keystore特别注意:您的名字与姓氏是什么?该项一定要使用网站的域名,例如: ,Cas Client使用httpclient访问cas server的时候,会严格的检查证书。
CAS_SSO配置手册(全)
CAS单点登陆配置手册1、Yale CAS简介CAS 是Yale (耶鲁)大学发起的一个开源项目,旨在为Web 应用系统提供一种可靠的单点登录方法,CAS 在2004 年12 月正式成为JA-SIG 的一个项目。
CAS 具有以下特点:•开源的企业级单点登录解决方案。
•CAS Server 为需要独立部署的Web 应用。
•CAS Client 支持非常多的客户端(这里指单点登录系统中的各个Web 应用),包括Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
2、CAS 原理和协议从结构上看,CAS 包含两个部分:CAS Server 和CAS Client。
CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到CAS Server。
图1 是CAS 最基本的协议过程:图 1. CAS 基础协议CAS Client 与受保护的客户端应用部署在一起,以Filter 方式保护受保护的资源。
对于访问受保护资源的每个Web 请求,CAS Client 会分析该请求的Http 请求中是否包含Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的CAS Server 登录地址,并传递Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。
用户在第3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的Service Ticket,并缓存以待将来验证,之后系统自动重定向到Service 所在地址,并为客户端浏览器设置一个Ticket Granted Cookie(TGC),CAS Client 在拿到Service 和新产生的Ticket 过后,在第5,6 步中与CAS Server 进行身份合适,以确保Service Ticket 的合法性。
cas sso流程
cas sso流程CAS SSO流程一、引言Single Sign-On(SSO)是一种身份验证和授权机制,允许用户只需一次登录即可访问多个相互信任的系统。
CAS(Central Authentication Service)是一种流行的SSO解决方案,它提供了一种安全、可靠的方式来实现跨系统的身份验证和授权。
本文将介绍CAS SSO流程的具体步骤和相关概念。
二、CAS SSO流程概述CAS SSO流程包括以下主要步骤:1. 用户访问客户端应用程序。
2. 客户端应用程序重定向用户到CAS服务器。
3. 用户在CAS服务器上进行身份验证。
4. CAS服务器颁发票据给用户。
5. 用户将票据发送回客户端应用程序。
6. 客户端应用程序将票据发送给CAS服务器进行票据验证。
7. CAS服务器验证票据,并向客户端应用程序返回用户身份信息。
8. 客户端应用程序将用户身份信息与本地用户存储进行匹配。
9. 用户在客户端应用程序上获得访问权限。
三、详细步骤1. 用户访问客户端应用程序:用户通过浏览器或其他方式访问需要身份验证的应用程序。
2. 客户端应用程序重定向用户到CAS服务器:客户端应用程序检测到用户未经身份验证,将用户重定向到CAS服务器的登录页面。
3. 用户在CAS服务器上进行身份验证:用户在CAS服务器上输入用户名和密码进行身份验证。
4. CAS服务器颁发票据给用户:如果身份验证成功,CAS服务器会生成一个票据,并将其存储在服务器端。
该票据是一个加密的字符串,用于表示用户的身份和会话信息。
5. 用户将票据发送回客户端应用程序:CAS服务器将票据返回给用户,并要求用户将其发送回客户端应用程序。
6. 客户端应用程序将票据发送给CAS服务器进行票据验证:客户端应用程序将接收到的票据发送给CAS服务器进行验证。
7. CAS服务器验证票据,并向客户端应用程序返回用户身份信息:CAS服务器验证票据的有效性,并将用户身份信息(如用户名、角色等)返回给客户端应用程序。
cas实现单点登出
CAS单点登出原理类似于之前的角色,我们重写单点登出的用例。
用户从application1登出。
交互步骤如下:1.用户在application1点击登出,登出url被转向到Server。
2.Server收到登出请求后,删除用户的cookie,并且从内存中取出之前用户在所有的ap plication中的登录的sessionId,依次向这些application发送消除session请求。
并且删除之前内存中保存的用户登录的ticket号和票据的信息。
3.各个application收到Server的请求后,被single sign out的Filter拦截,根据回传的sessionId号,清除用户session。
4.单点登出完毕。
cas 实现single sign out的原理,如图所示:图一图二第一张图演示了单点登陆的工作原理。
第二张图演示了单点登出的工作原理。
从第一张图中,当一个web浏览器登录到应用服务器时,应用服务器(application)会检测用户的session,如果没有session,则应用服务器会把url跳转到CAS server上,要求用户登录,用户登录成功后,CAS server会记请求的application的url和该用户的sessionId(在应用服务器跳转url时,通过参数传给CAS server)。
此时在CAS服务器会种下TGC Cookie值到webbrowser.拥有该TGC Cookie的webbrowser可以无需登录进入所有建立sso服务的应用服务器application。
在第二张图中,当一个web浏览器要求登退应用服务器,应用服务器(application)会把url跳转到CAS server上的/cas/logout url资源上,CAS server接受请求后,会检测用户的TCG Cookie,把对应的session清除,同时会找到所有通过该TGC sso登录的应用服务器URL提交请求,所有的回调请求中,包含一个参数logoutRequest,内容格式如下:<samlp:LogoutRequest ID="[RANDOM ID]" Version="2.0" IssueInstant="[CURRE NT DATE/TIME]"><saml:NameID>@NOT_USED@</saml:NameID><samlp:SessionIndex>[SESSION IDENTIFIER]</samlp:SessionIndex></samlp:LogoutRequest>所有收到请求的应用服务器application会解析这个参数,取得sessionId,根据这个Id取得session 后,把session删除。
CAS实现SSO单点登录原理
CAS实现SSO单点登录原理1. CAS 简介简单的 SSO 的体系中,会有下⾯三种⾓⾊:1 , User (多个)2 , Web 应⽤(多个)3 , SSO 认证中⼼( 1 个)虽然 SSO 实现模式千奇百怪,但万变不离其宗:1 Web 应⽤不处理 User 的登录,否则就是多点登陆了,所有的登录都在 SSO 认证中⼼进⾏。
2 SSO 认证中⼼通过⼀些⽅法来告诉 Web 应⽤当前访问⽤户究竟是不是张三 / 李四。
3 SSO 认证中⼼和所有的 Web 应⽤建⽴⼀种信任关系, SSO 认证中⼼对⽤户⾝份正确性的判断会通过某种⽅法告之 Web 应⽤,⽽且判断结果必须被 Web 应⽤信任。
1.1. What is CAS ?CAS ( Central Authentication Service )是 Yale ⼤学发起的⼀个企业级的、开源的项⽬,旨在为 Web 应⽤系统提供⼀种可靠的单点登录解决⽅法(属于 Web SSO )。
CAS 开始于 2001 年,并在 2004 年 12 ⽉正式成为 JA-SIG 的⼀个项⽬。
1.2. 主要特性1、开源的、多协议的 SSO 解决⽅案; Protocols : Custom Protocol 、 CAS 、 OAuth 、 OpenID 、 RESTful API 、 SAML1.1 、SAML2.0 等。
2、⽀持多种认证机制: Active Directory 、 JAAS 、 JDBC 、 LDAP 、 X.509 Certificates 等;3、安全策略:使⽤票据( Ticket )来实现⽀持的认证协议;4、⽀持授权:可以决定哪些服务可以请求和验证服务票据( Service Ticket );5、提供⾼可⽤性:通过把认证过的状态数据存储在 TicketRegistry 组件中,这些组件有很多⽀持分布式环境的实现,如: BerkleyDB 、 Default 、 EhcacheTicketRegistry 、 JDBCTicketRegistry 、 JBOSS TreeCache 、 JpaTicketRegistry 、 MemcacheTicketRegistry 等;6、⽀持多种客户端: Java 、 .Net 、 PHP 、 Perl 、 Apache, uPortal 等。
CAS单点登录(SSO)服务器配置
CAS单点登录(SSO)服务器配置一、单点登录的概念单点登录(SSO)英文全称Single Sign On,单点登录。
SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。
它是目前比较流行的企业业务整合的解决方案之一。
简单的 SSO 的体系中,会有下面三种角色: 1 、 User (多个) 2 、 Web 应用(多个) 3 、 SSO 认证中心(1 个)虽然 SSO 实现模式千奇百怪,但万变不离其宗:1) Web 应用不处理 User 的登录,否则就是多点登陆了,所有的登录都在 SSO 认证中心进行。
2) SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是谁。
3) SSO 认证中心和所有的Web 应用建立一种信任关系,SSO 认证中心对用户身份正确性的判断会通过某种方法告之Web 应用,而且判断结果必须被Web 应用信任。
二、单点登录原理当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候,就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket 送到认证系统进行效验,检查ticket的合法性。
如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。
CAS单点登录原理图:三、CAS 单点登录配置1.SSL配置先在CAS官方上下载cas server,解压后找到在modules文件夹中找到cas-server-webapp-3.4.11.war,将文件名更改为cas.war后置于tomcat应用目录下。
因为CAS的服务器验证需要通过SSL来完成,所以SSL对于CAS来说是必须的,SSL 的配置不是本文的重点,我们只是做简要的介绍。
CAS单点登录应用+数据库验证
转载:/architecture/19446.html一.基础知识点1.CAS Server 是一套基于 Java 实现的服务,该服务以一个 Java Web Application 单独部署在与 servlet2.3 兼容的 Web 服务器上,另外,由于 Client 与 CAS Server 之间的交互采用Https 协议,因此部署 CAS Server 的服务器还需要支持 SSL 协议。
2.HTTPS的全称是Secure Hypertext Transfer Protocol(安全超文本传输协议),是在http协议基础上增加了使用SSL加密传送信息的协议。
它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。
它使用安全套接字层(SSL)进行信息交换。
HTTPS和HTTP的区别:https协议需要到ca申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的.HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比http协议安全.3.如果希望 Tomcat 支持 Https,主要的工作是配置 SSL 协议,其配置过程和配置方法可以参考 Tomcat 的相关文档。
不过在生成证书的过程中,会有需要用到主机名的地方,CAS 建议不要使用 IP 地址,而要使用机器名或域名。
配置本地虚拟域名:修改C:\Windows\System32\drivers\etc\hosts,添加内容如下:127.0.0.1 这样在访问的时候其实是访问的127.0.0.1也就是本机.4.证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书;以下演示是用JDK自带的keytool工具生成证书;如果以后真正在产品环境中使用肯定要去证书提供商去购买,证书认证一般都是由VeriSign认证,中文官方网站:/cn/二.证书应用1.用JDK自带的keytool工具生成证书:命令:keytool -genkey -alias wsria -keyalg RSA -keystore d:/keys/wsriakeyKeytool使用举例:命令:keytool -genkey -alias tomcat -keyalg RSA -keystore d:\mykeystore-dname ";CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN";-keypass changeit -storepass -validity 180参数说明:-genkey表示要创建一个新的密钥-dname表示密钥的Distinguished Names,CN=commonName (域名:建议使用配置的域名,也可使用localhost)OU=organizationUnitO=organizationNameL=localityNameS=stateNameC=countryDistinguished Names表明了密钥的发行者身份-keyalg使用加密的算法,这里是RSA-alias密钥的别名-keypass私有密钥的密码,这里设置为changeit-keystore 密钥保存在D:盘目录下的mykeystore文件中-storepass 存取密码,这里设置为changeit,这个密码提供系统从mykeystore文件中将信息取出-validity该密钥的有效期为 180天 (默认为90天)2.导出证书命令:D:\keys>;keytool -export -file d:/keys/wsria.crt -alias wsria -keystore d:/keys/wsriakey输入密码为上面生成证书时输入的密码(keystore)3.为客户端的JVM导入证书命令:keytool -import -keystore ";%JAVA_HOME%/jre/lib/security/cacerts";-file D:/keys/wsria.crt -alias wsria导入证书时出现java.io.IOException: Keystore was tampered with, or password was incorrect异常的解决办法:输入保护密码,默认的就是changeit。
单点登录(SSO)解决方案之CAS入门案例
单点登录(SSO)解决⽅案之CAS⼊门案例单点登录: 单点登录(Single Sign On),简称为 SSO,是⽬前⽐较流⾏的企业业务整合的解决⽅案之⼀。
SSO的定义是在多个应⽤系统中,⽤户只需要登录⼀次就可以访问所有相互信任的应⽤系统。
CAS: CAS 是 Yale ⼤学发起的⼀个开源项⽬,旨在为 Web 应⽤系统提供⼀种可靠的单点登录⽅法,CAS 在 2004 年 12 ⽉正式成为 JA-SIG 的⼀个项⽬。
CAS 具有以下特点: 1,开源的企业级单点登录解决⽅案。
2,CAS Server 为需要独⽴部署的 Web 应⽤。
3,CAS Client ⽀持⾮常多的客户端(这⾥指单点登录系统中的各个 Web 应⽤),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
SSO单点登录访问流程主要步骤:1. 访问服务:SSO客户端发送请求访问应⽤系统提供的服务资源。
2. 定向认证:SSO客户端会重定向⽤户请求到SSO服务器。
3. ⽤户认证:⽤户⾝份认证。
4. 发放票据:SSO服务器会产⽣⼀个随机的Service Ticket。
5. 验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务。
6. 传输⽤户信息:SSO服务器验证票据通过后,传输⽤户认证结果信息给客户端。
CAS服务端(CAS Server)部署:准备⼯作: cas服务端其实就是⼀个war包。
⾸先需要从下载cas-server,我这⾥下载并使⽤的是 cas-server-4.0.0-release.zip。
解压后,在modules⽬录下的cas-server_webapp-4.0.0.war,将其改名为cas.war放⼊tomcat⽬录下的webapps下。
所以上述为需要准备的东西,cas-server的war包以及tomcat,下⾯⽤的tomcat为apache-tomcat-7.0.77启动tomcat⾃动解压war包。
基于JA-SIG CAS统一认证平台(SSO)的设计与实现
第 33 卷第3期2013 年 6 月广东海洋大学学报 Journal of Guangdong Ocean UniversityVol.33 No.3 Jun. 2013基于 JA-SIG CAS 统一认证平台(SSO)的设计与实现李建佳,王 晶( 广东海洋大学信息学院,广东 湛江 524088 )摘要:基于 JA-SIG CAS 框架,设计、实现了一个单点登录统一认证平台,为大型网站提供安全统一的用户身份认证服务。
统一认证平台分为 SSO CAS 服务器端和 CAS 客户端,服务器端采用 SSL 加密协议的 https 方式部署, 客户端采用 http 方式部署。
平台运用 Spring Securit、 Spring Remote、 Hibernate3、 Struts 2.2 等技术, 以及 PGTIOU(代 理授权许可证索引)、PGT(代理授权许可证)、PT(代理许可证)、ST(服务许可证)、TGC(Ticket 凭证存放 cookie)等关 键数据结构,实现统一身份认证的服务票据生成、授权、检查、保存、发送等,提供单点登录服务。
关键词:JA-SIG CAS;SSO;统一认证;单点登录 中图分类号:TP 393 文献标志码:A 文章编号:1673-9159( 2013)03-0078-06Design and Implementation of the Unified Authentication Platform (SSO) Based on JA-SIG CASLI Jian-Jia, WANG Jing (College of Information, Guangdong Ocean University, Zhanjiang 524088, China ) Abstract: Based on the JA-SIG CAS framework, a single sign-on unified authentication platform is designed and realized, it provides secure and unified user’s identity authentication service for big web site. The unified authentication platform consists of SSO CAS server and CAS client. The server is deployed by using HTTPS format of SSL ENCRYPTION PROTOCOL and the client is deployed by using HTTP format. The platform adapts Spring Securit, Spring Remote, Hibernate3 and Struts 2.2, etc., as well as the critical data structures of PGTIOU (proxy-granting ticket IOU), PGT (proxy-granting ticket), PT (proxy ticket), ST (service ticket), TGC (ticket-granting cookie) to the platform in order to realize the service bill generation, authorization, check, save and send on the unified identity authentication server to provide an single sign-on service. Key words: JA-SIG CAS; SSO; unified authentication; single sign-on 对一个大型网络,它们的子系统都是单独存在 的,比如,新浪门户网站和新浪博客服务、163 门 户网站和 163 邮箱服务等,各子系统对应不同的域 名。
SSO 单点登录配置方案
SO系统Single Sign On(单点登录)配置1关于SSO实现一个易用的、能跨不同Web应用的单点登录认证中心。
实现统一的用户身份和密钥管理,减少多套密码系统造成的管理成本和安全漏洞。
降低认证模块在IT系统设计中的耦合度,提供更好的SOA设计和更弹性的安全策略。
2关于CASCAS是目前能够找到的最好的开源单点登录产品。
CAS采用Cookie机制。
CAS单点登录系统最早由耶鲁大学开发。
3配置环境到CAS 官方网站下载CAS Server 和Client,我用的版本是:/downloads/cas/cas-server-3.1.1-release.zip/downloads/cas-clients/cas-client-java-2.1.1.zipWEB服务器:apache-tomcat-7.0.10JDK :jdk1.6.0_144配置过程4.1配置默认的认证服务器下载cas-server-3.1.1-release.zip ,解压后,将\modules\ cas-server-webapp-3.1.1.war改名为cas.war,并拷贝cas.war到D:\Java\apache-tomcat-6.0.14\webapps目录下。
启动Tomcat,访问网址http://localhost:8080/cas/index.jsp,出现以下画面。
输入用户名和密码,只要相同就可登录。
且进入如下界面。
至此,默认配置的服务器配置成功。
4.2扩展服务器端接口(后继工作内容)4.2.1JDBC方式4.2.2LDAP方式各个银行都是用这种方式。
4.2.3XML 方式?(还有MAP 方式)4.3个性化页面(后继工作内容)CAS 提供了 2 套默认的页面,分别为“default”和“ simple”,分别在目录“ cas/WEB-INF/view/jsp/default”和“ cas/WEB-INF/view/jsp/simple””下。
基于CAS实现单点登录(SSO):登录成功后,casclient如何返回更多用户信息
基于CAS实现单点登录(SSO):登录成功后,casclient如何返回更多用户信息从cas server登录成功后,默认只能从casclient得到用户名。
但程序中也可能遇到需要得到更多如姓名,手机号,email等更多用户信息的情况。
cas client拿到用户名后再到数据库中查询,的确可以得到关于该用户的更多信息。
但是如果用户登录成功后,直接从cas server返回给casclient用户的详细信息,这也是一个不错的做法。
这个好chǔ,尤其是在分布式中得以彰显,cas server可以把用户信息传递给各个应用系统,如果是上面那种做法,那么各个系统得到用户名后,都得去数据库中查询一遍,无疑是一件重复xìng工作。
文章中 CAS 基础环境:cas-server-3.5.2cas-client-3.2.1一、首先需要配置属性attributeRepository首先,你需要到WEB-INF目录找到 deployerConfigContext.x ml文件,同时配置attributeRepository 如下:<bean class="org.jasig.services.persondir.support.jdbc.Sing leRowJdbcPersonAttributeDao"id="attributeRepository"> <constructor-argindex="0" ref="casDataSource"/><constructor-argindex="1" value="select * from userinfo wh ere {0}"/><propertyname="queryAttributeMapping"><map><entrykey="username" value="loginname"/> // 这里的key 需写username和登录页面一致,value对应数据库用户名字段</map></property><propertyname="resultAttributeMapping"><map>// <!--key为对应的数据库字段名称,value为提供给客户端获取的属性名字,系统会自动填充值--><entrykey="id" value="id"/><entrykey="mobile" value="mobile"/><entrykey="email" value="email"/></map></property></bean>其中:切记:查询出来的字段名中间不能使用 _ (下划线),否则获取不到数据,如 cell_phone 需要设置别名为 cellPhone.queryAttributeMapping是组装sql用的查询条件属性,上述配置后,结合封装成查询sql就是 select *from userinfo where loginn ame=#username#resultAttributeMapping是sql执行完毕后返回的结构属性, ke y对应数据库字段,value对应客户端获取参数。
基于JWT和CAS的SSO单点登录方案
基于JWT和CAS的SSO单点登录方案单点登录是一种比较流行的服务于企业业务整合的一种解决方案。
单点登录(SSO:Single Sign On)的意思是:在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
比如我们登录淘宝网后,再打开天猫首页可以发现已经是登录状态了。
SSO 这个概念已经出现很久,目前已有很多非常成熟的实现方案,比如OpenSSO,OpenAM,Kerberos,CAS等。
其中CAS方案在Java Web领域应用最为广泛。
•OpenSSO:曾经Sun的一款开源SSO产品,后来Sun被Oracle收购以后,Oracle便关闭了OpenSSO这个项目。
•OpenAM:OpenAM的原型就是OpenSSO,可用于替换被取消的OpenSSO。
•Kerberos:麻省理工研发的一个基于DES加密技术的网络认证协议。
Windows2000和后续的微软操作系统都将Kerberos作为默认认证方法。
•CAS:CAS(Central Authentication Service)是耶鲁大学发起的一个开源项目,支持Java, .Net, PHP等各种语言开发的web应用。
要实现单点登录,通常需要有一个专门的SSO认证中心,在访问业务系统的资源前,用户需要先在认证中心认证身份,才能获得允许访问业务系统的令牌(token)。
SSO基本原理根据CAS协议,整个系统分为CAS Server和CAS Client两个角色,CAS Server负责完成对用户的认证工作;CAS Client 与受保护的应用部署在一起。
JWT标准是应用最为广泛的基于Token的会话管理方案,前文《Java面试常见问题:JWT是什么?》曾经介绍过JWT标准。
CAS 方案也支持JWT,本文我们来介绍一下基于JWT和CAS的SSO单点登录方案。
假设业务系统A和业务系统B都依赖CAS认证服务提供单点登录的会话管理。
CAS提供单点登录SSO登录过程当用户对业务系统A的页面page01发起第一次请求时,请求流程如下图所示。
手把手教你利用CAS实现单点登录
手把手教你利用CAS实现单点登录单点登录(Single Sign-On,简称SSO)是一种让用户只需要进行一次身份验证,就可以访问多个不同系统的认证机制。
SSO的实现通常需要借助于中央身份认证服务器(Central Authentication Service,简称CAS)。
CAS是一种基于票据的身份认证和访问控制系统,它可以为不同的应用系统提供统一的用户身份认证服务。
下面将手把手教你如何利用CAS实现单点登录。
1.安装配置CAS服务器首先,我们需要安装配置CAS服务器。
CAS服务器是使用Java开发的一个Web应用程序,可以运行在Tomcat等Java容器中。
具体安装步骤如下:1.3 打开`etc/cas.properties`文件,配置CAS服务器的相关参数,比如数据库连接信息、密钥等。
1.4 执行`./build.sh package`来构建CAS服务器应用程序。
1.5 将构建生成的`cas.war`文件部署到Tomcat或其他Java容器中,并启动该容器。
2.配置应用系统配置应用系统以支持CAS单点登录。
假设我们有一个应用系统A和一个应用系统B,我们希望用户在登录应用系统A后可以无需再次登录即可访问应用系统B。
2.1修改应用系统A的登录页面将应用系统A的登录页面修改为CAS服务器的登录页。
CAS服务器默认使用`/login`路径作为登录页面的URL。
使用CAS的登录页面可以保证用户在身份验证后可以正确跳转回应用系统A。
2.2配置应用系统A的CAS客户端将应用系统A配置成CAS的客户端,以便能够与CAS服务器进行通信。
配置方法通常是将CAS客户端的相关依赖库加入应用系统A的`pom.xml`文件,并在应用系统A的配置文件中配置CAS服务器的地址和其他参数。
2.3修改应用系统B的登录页面将应用系统B的登录页面修改为CAS服务器的登录页,同样使用CAS的登录页面。
2.4配置应用系统B的CAS客户端将应用系统B配置成CAS的客户端,配置方法与应用系统A类似。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录0. 文档介绍 (2)0.1文档目的 (2)0.2文档范围 (2)0.3读者对象 (2)0.4参考文献 (2)0.5术语与缩写解释 (2)1.概述 (3)1.1背景 (3)1.2环境 (3)1.3下载资源 (3)2. 配置CAS SERVER (4)2.1简单配置 (4)2.2数据库验证配置 (5)2.3参数配置 (8)2.4HTTPS验证配置 (10)2.5自定义页面 (13)3. 配置JAVA CLIENT (16)3.1HTTPS验证 (16)3.2HTTP验证 (18)4. 配置DOTNET CLIENT (19)5. 配置PHP CLIENT (23)6. 如何实现单点注销 (23)0. 文档介绍0.1 文档目的记录使用CAS实现SSO的过程。
0.2 文档范围使用CAS实现SSO的过程。
0.3 读者对象任何有兴趣的家伙。
0.4 参考文献提示:列出本文档的所有参考文献(可以是非正式出版物),格式如下:[标识符] 作者,文献名称,出版单位(或归属单位),日期大部分都是网络上查询的资料,很多,不列举了。
0.5 术语与缩写解释1.概述1.1背景单点登录是必须的,实现方式颇多,这里就说使用CAS的实现方式。
使用CAS实现SSO,网络上说明很多,大部分都是从制作证书开始,而实际上是可以不使用HTTPS 验证,这样更方便。
单点登录的原理是通过拦截你设定的URL,并跳转到你指定的CAS SERVER登录页,当你登录成功后,带着TICKET,返回到你打开的URL。
然后你就可以一票在手,畅通无阻。
网上有个家伙用旅游的套票来解释单点登录,非常形象。
当你到达一个旅游区门口,你可以买一个套票,套票规定你可以游览N个景点,进入这些景点的时候,你不需要再买票,也就实现了单点登录。
同时,也可以借用这个比喻说明一下单点注销。
当你打开一个应用A时,单击了注销按钮,跳转到http://hostname:port/cas/logout或者https://hostname:port/cas/logout,系统显示注销成功。
此时,IE窗口没有关闭,你继续打开应用A,仍然没有注销成功,不需要登录。
这就相当于你已经在旅游景点内,即使你把套票撕毁了,你仍然可以继续参观这个景点,不会把你驱逐出去。
但是,你再也进不了其它的景点了。
那么怎么实现立即生效的注销呢?或者这种方式是否就满足我们的需求呢?1.2环境Windows XP、JDK1.6.03、Tomcat6.0.20注意:配置好环境变量。
1.3下载资源服务器端:/downloads/cas当前最新版本是3.3.4,测试安装的版本为3.3.3cas-server-3.3.3-release.zip客户端:https:///svn/cas-clients/cas-client-2.0.11.zip JAVA支持单点登录cas-client-3.1.8-release.zip JAVA支持单点注销dotnet-client DOTNET支持类phpcas PHP支持注意:同时要下载源代码,部分功能需要修改源代码,重新做包。
2. 配置CAS SERVERCAS SERVER目录介绍。
2.1简单配置把你下载cas-server解压,进入cas-server-3.3\modules,复制cas-server-webapp-3.3.war 到tomcat\webapps下,修改名称为cas.war,方便使用,原来的名字太长了。
然后启动IE,输入http://localhost:8080/cas检验是否可以访问,如果可以,则输入相同的用户名和密码,比如cas/cas,测试是否能登录。
如果你对安全性要求不高且急不可待,这个时候就可以直接进行CAS CLIENT的配置。
2.2数据库验证配置简单配置后,可以使用相同的用户名和密码,进行登录。
这个不实际,可以通过配置实现连接自己的数据库进行配置。
这里有个前提,就是所有系统需要使用相同的用户表和密码加密方法,可以使用CAS自带的加密方法(\org\jasig\cas\authentication\handler\ DefaultPasswordEncoder.class)或自己用JAVA写的加密方法。
进入目录tomcat\webapps\cas\WEB-INF,打开文件deployerConfigContext.xml,找到类似下面的代码:注意:cas-server根据版本不同,文件的路径或BEAN位置可能不同,逐个文件夹找下。
<beanclass="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticat ionHandler" />这是默认的方法。
同时还有两种可选,如下:<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"><property name="dataSource" ref="casDataSource" /><property name="sql" value="select password from tbUser where lower(name) = lower(?)" /></bean>/************************************************************************/<bean class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler"abstract="false" lazy-init="default" autowire="default" dependency-check="default"><property name="dataSource" ref="casDataSource" /><property name="tableUsers" value="tbUser" /><property name="fieldUser" value="u_userid"/><property name="fieldPassword" value="u_password"/><property name="passwordEncoder" ref="passwordEncoder"/></bean>以上两种方式都经过测试。
另外,也可以写出自己的方法验证,修改BEAN的CLASS 属性即可。
如果没有密码没有加密,则可以把参数<property name="passwordEncoder" ref="passwordEncoder"/>去掉。
下面针对最下面的方法进行说明。
看它的属性,还需要定义两个BEAN,数据源和加密,如下:<bean id="casDataSource" class="mons.dbcp.BasicDataSource"><!—SQL SERVER<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property><property name="url" value="jdbc:sqlserver://10.7.3.90:1433;DatabaseName=itacc"></property><property name="username" value="zero" /><property name="password" value="123456" />--><!--ORACLE<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property><property name="url" value="jdbc:oracle:thin:@10.7.3.90:1521:orcl"></property><property name="username" value="zero"></property><property name="password" value="123456"></property><property name="maxActive" value="100"></property><property name="maxIdle" value="30"></property><property name="maxWait" value="500"></property><property name="defaultAutoCommit" value="true"></property></bean><!—加密<bean id="passwordEncoder"class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"autowire="byName"><constructor-arg value="MD5"/></bean>由于CAS-SERVER.WAR默认没有采用数据库加密,所以部分JAR包,没有引入,下面这些需要复制到webapps\cas\WEB-INF\lib里面:Cas-server-support-jdbc-3.3.3.jarCas-server-support-ldap-3.3.3.jarCommons-dbcp.jarCommons-pool.jarOrg.springframework.jdbc-3.0.0.M4.jar //spring要根据自己的版本选择Org.springframework.transaction-3.0.0.M4.jarSqljdbc.jar //数据库连接JAR,根据自己的复制Oraclejdbc.jar完成以后,用户表数据准备好后,可以运行http://localhost:8080/cas进行登录测试。