栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

CAS单点登录

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CAS单点登录

CAS单点登录

中心认证服务,是指统一提供给内部其它N个应用的认证服务。

具体可参考:https://www.cnblogs.com/lihuidu/p/6495247.html。解释得很形象。

类似例子

你去某个大学吃饭、看书,需要进他们的食堂、图书馆(这里就类似于app1、app2)

    你去了食堂,食堂阿姨(app1)告诉你,不收现金。并且告诉你去校服务中心(cas service)去换小票服务中心小姐姐看了它的系统,发现你之前没有到访过本校,于是让你填表(Form登录)当你填表后,服务中心会记录下你的个人凭证(TGT),并给你一张小票(ticket)你拿着小票再去食堂窗口打饭,食堂阿姨看着票,并去问服务中心,票是否是真的,服务中心说是真的你可以打饭吃饭了,并且这一天都可以打饭(cookies)你吃完饭后,想去图书馆自习,图书馆阿姨(app2)也不让进,让你去服务中心服务中心小姐姐看了你的个人凭证(TGT),于是你不用再填表(登录)了,并也给你一张小票你拿着小票再去图书馆,图书馆阿姨联系服务中心后,发现票是真的于是你可以看书了,并且这一天任何时段都可以随意进出看书(cookies)
以shiro-cas为例

在项目的代码里面有如下的配置,其中进行单点登录时的cas服务器为xxx,而ticket验证服务器为yyy。

shiro:
  casFilterUrlPattern: /shiro-cas
  casServerUrlPrefix: xxx
  shiroServerUrlPrefix: http://yourtologin.com
  casTicketValidatorServerUrlPrefix: yyy
  cookieDomain: 'xx.com'
  loginUrl: ${shiro.casServerUrlPrefix}/login?service=${shiro.shiroServerUrlPrefix}${shiro.casFilterUrlPattern}
  logoutUrl: ${shiro.casServerUrlPrefix}/logout?service=${shiro.shiroServerUrlPrefix}
  shiroSessionKeyPre: 'kkk'
  shiroSessionExpireSeconds: 3600
  globalSessionTimeoutSeconds: 3600

启动项目后,访问http://yourtologin.com。未登录,所以跳转到cas服务器上xxx/login?service=http://yourtologin.com/shiro-cas,展示出登录界面。

输入用户名和密码后,以post请求调用了authentication/authenticate的方法。post请求的数据如下:

{
	"mainAuthMethodName": "username-password",
	"credential": {
		"username": "username",
		"password": "xxxxxx",
		"encodeVersion": "2"
	},
	"context": {
		"deviceId": "default",
		"sign": "default"
	},
	"version": "2.0",
	"accountSystem": "employee",
	"service": "http://yourtologin.com/shiro-cas",
	"loginTicketId": "xxxxxx"
}

其中credential(凭据)中即包含了用户名和密码(经过加密的,每次不一样)。cas服务器返回的数据包含了ticket。

接着调用项目中的http://yourtologin.com/shiro-cas?ticket=ttt。

项目代码在类PcShiroCasRealm中,其登录认证的逻辑如下:

    获取到token,其中包含ticket,userId和isRememberMe。此时只有ticket不为空与cas服务器进行ticket的认证认证成功后,获取到principle(用户相关的信息,用户名等)根据用户名去数据库查询用户将token中的userId和isRememberMe设置好将用户信息保存到session中,cookies的设置

认证成功后,进行授权,并展示出首页。

需要注意的是,shiro中涉及到cas的认证和不涉及到cas的认证不一样。对于不涉及到cas的认证,会直接构造好用户密码这样的AuthenticationInfo,而对于cas的认证,构建好的是用户名和ticket,接着扔给cas服务器去认证。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716164.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号