.jpg)
一、cas单点登录
首先回答你第一个问题,安全证书是tomcat或者apache用于开启ssl安全的socket链接使用的,也就是支持https协议的。一般我们都用tomcat作为应用服务器,这样就需要tomcat首先支持https协议,开启https很简单,找一下官方的文档资料,我在这里简单说一下,首先在部署tomcat的机器上为jdk(确切的说是jre,不过通常我们都在tomcat的服务器上安装jdk而不是jre)生成证书,使用jre自带的keytool工具来生成即可,生成证书的过程中注意一点,就是CN项,也就是第一个字段,是服务器的域名,比如本机测试的话可以用localhost。使用以下语句
1. keytool-keystore keystore-alias acegisecurity-genkey-keyalg RSA-validity 9999-storepass password-keypass password
What is your first and last name?(这个就是CN项)回答localhost即可
其他随便填写即可。
2. keytool-export-v-rfc-alias acegisecurity-file acegisecurity.txt-keystore keystore-storepass password
这一步是导出key。
3.复制 acegisecurity.txt到%JAVA_HOME%\jre\lib\security
4.复制 keystore到%CATALINA_HOME%
5.控制台窗口(如果是Windows系统就是dos窗口)下进入%JAVA_HOME%\jre\lib\security
6. keytool-import-v-file acegisecurity.txt-keypass password- keystore cacerts-storepass changeit-alias acegisecurity
向虚拟机中导入证书
接下来,用编辑器打开%CATALINA_HOME%/conf/server.xml,找到<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"/>
这一行默认是被注释掉的,取消注释,并加入keystoreFile="keystore" keystorePass="password"这两个属性,注意keystoreFile属性可以使用keystore文件的绝对路径,也可使用基于%CATALINA_HOME%环境变量的相对路径,keystorePass是访问keystore的密码,应和上面制作证书时设定的密码保持一致。
访问,应弹出一个对话框,告知用户正要访问的站点的证书不安全,是否接受,确认接受,应可看到那只熟悉可爱的小猫。
通过以上步骤就为tomcat配置了ssl。
配置了ssl,然后就是把cas server的war部署到这个tomcat下就可以了,到此,你的cas服务器就算部署成功了,但是,cas server那个war默认是使用user.properties中的那么几个用户做认证,要实现不同类型的认证方式还需要自己开发,这里不具体讲了,可以参考官方文档,也可以问我。呵呵:)
部署了cas服务,接下来就是接入client application了。
接入application有三种方式,一种是使用acegisecurity,很好用,但是很复杂;一种是使用cas提供的cas client,简单快捷,适应各种恶劣环境,哈哈;最后一种是lam的一个开源项目,没试过,不敢说怎么样。前两种不明白可以找官方文档,也尅问我,哈哈。
就第一个问题说的较详细,实在打字太多,有点累了。后面的有点粗糙,不过对于有心的人我相信还是很受用的。总结了很久的东西,希望对你有帮助。
二、CAS***5***3单点登录***退出客户端搭建***Springboot***
使用Springboot搭建cas客户端,主要是配置四个过滤器和一个监听器。
用于过滤不需要登录的用户,需要实现UrlPatternMatcherStrategy接口,在matches函数里添加不需要用户登录的链接。
按照同样的方法实现客户端系统2。
启动cas服务器端和两个客户端。输入 ,则跳转到登录界面
单点退出,需要下面三个步骤:1、添加过滤器类,过滤掉不需要登录的url;2、添加退出跳转的控制器;3、修改服务端application.properties,加cas.logout.followServiceRedirects=true,让客户端可以自己制定退出的路径,否则会走默认退出路径。
过滤器类需要实现UrlPatternMatcherStrategy接口,然后配置到springboot中,请参考单点登录的创建过滤器类和配置过滤器到springboot。
退出的方式有两种,一种是走默认的路径,另一种是走自定义的返回路径。请参考单点登录的用户退出控制器。
将上面的内容添加到applicaiton.properties,这样就可以允许客户端定制自己的退出路径了。
http协议配置:cas 5.3.x默认客户端不支持http协议,如果不进行配置,则会出现“未认证授权的服务”错误。
要配置兼容http协议,需要在HTTPSandIMAPS-10000001.json文件中添加http。
三、求助关于cas单点登陆的问题
SSO的主要实现方式有:
1、共享 cookies
基于共享同域的 cookie是 Web刚开始阶段时使用的一种方式,它利用浏览同域名之间自动传递 cookies机制,实现两个域名之间系统令牌传递问题;另外,关于跨域问题,虽然 cookies本身不跨域,但可以利用它实现跨域的 SSO。如:代理、暴露 SSO令牌值等。
缺点:不灵活而且有不少安全隐患,已经被抛弃。
2、 Broker-based(基于经纪人)
这种技术的特点就是,有一个集中的认证和用户帐号管理的服务器。经纪人给被用于进一步请求的电子身份存取。中央数据库的使用减少了管理的代价,并为认证提供一个公共和独立的"第三方"。例如 Kerberos、 Sesame、 IBM KryptoKnight(凭证库思想)等。 Kerberos是由麻省理工大学发明的安全认证服务,已经被 UNIX和 Windows作为默认的安全认证服务集成进操作系统。
3、 Agent-based(基于代理人)
在这种解决方案中,有一个自动地为不同的应用程序认证用户身份的代理程序。这个代理程序需要设计有不同的功能。比如,它可以使用口令表或加密密钥来自动地将认证的负担从用户移开。代理人被放在服务器上面,在服务器的认证系统和客户端认证方法之间充当一个"翻译"。例如 SSH等。
4、 Token-based
例如 SecureID,WebID,现在被广泛使用的口令认证,比如 FTP、邮件服务器的登录认证,这是一种简单易用的方式,实现一个口令在多种应用当中使用。
5、基于网关
6、基于 SAML
SAML(Security Assertion Markup Language,安全断言标记语言)的出现大大简化了 SSO,并被 OASIS批准为 SSO的执行标准。开源组织 OpenSAML实现了 SAML规范。
四、终于搞明白了,CAS单点登录原理解析!!
真的如老话所说,“没有笨的人,只有懒得人”。前段时间时间需要和其他项目做cas集成,于是乎在网上找了几篇教程看了一下,好了,很简单,学会了,开搞(自以为研究明白)。集成完事了,登录成功了,自以为这就过去了。然而,没过几天就出bug了,这下惨了,当初没有好好学出了问题都不知道咋解决。无奈,只得静下心来好好学习一番(当初太懒付出的代价)。原理其实很简单的,只要耐下心来好好研究终会搞懂的。
先看下图
那么是如何验证用户是否登录过呢?
如果session中包含“ const_cas_assertion”属性,说明已经登录,跳过此过滤器执行配置的其他过滤器;
如果ticket参数不为空(可能是登陆后跳转回来的),跳过此过滤器,执行TicketValidationFilter验证ticket;
如果前两个条件都不满足,重定向到cas服务端,返回登录页面进行登录操作。
Cookie中的CASTGC:向cookie中添加该值的目的是当下次访问 www.cas.server.com时,浏览器将Cookie中的TGC携带到服务器,服务器根据这个TGC,查找与之对应的TGT。从而判断用户是否登录过了,是否需要展示登录页面。TGT与TGC的关系就像SESSION与Cookie中SESSIONID的关系。
TGT:Ticket Granted Ticket(俗称大令牌,或者说票根,他可以签发ST)。
TGC:Ticket Granted Cookie(cookie中的value),存在Cookie中,根据他可以找到TGT。
ST:Service Ticket(小令牌),是TGT生成的,默认是用一次就生效了。也就是上面的ticket值。
为了加深理解,也为了以后作参考,整理记录。另外,还要说一句,不要偷懒,多动手多动脑!
本文来自用户投稿,不代表币大大立场,如若转载,请注明出处:https://czxurui.com/jys/166051.html


发表回复
评论列表(0条)