CAS统一认证中心,针对移动客户端的认证过程设计(APP视角)

标签: 极客互联 | 发表时间:2018-06-11 19:49 | 作者:shendao
出处:http://www.shellsec.com

CAS统一认证中心,针对移动客户端的认证过程设计(APP视角)

  • 业务场景

    • 统一认证中心CAS,用员工工号密码登录。
    • 有个通讯录server系统
    • 通讯录APP接入两个服务,即登录接CAS,业务接通讯录server
    • 通讯录APP在用户登录的情况下允许查询其他员工信息
  • 简单例子

    • 通讯录server系统有两个接口,用户信息接口,员工信息查询接口
  • 设计过程(未认证)

    • APP启动调用通讯录server的接口getUserInfo,用来获取当前用户的基本信息。
    • 通讯录server后台发现没有登录,返回报文
         {     "code": "0030",     "errorMessage": "未登录",     "result": null } 
    • APP解析返回报文,code==0030,即跳转native登录页面
    • 登录页面调用cas提供的登录接口
         https://cas.domain.com/login.do?userName=66647&password=12345&jsonView=true&rememberMe=true  userName:工号 password:密码 jsonView:是否返回json,因为大多情况下,CAS被设计成支持web鉴权 rememberMe:是否开启记住会话 
    • 如果登陆成功,CAS会返回一些cookies
         <NSHTTPCookie   version:0   name:TGC   value:TGTCF84007422EAD5E7CED12D9658AF05D1716F52B9   expiresDate:'(null)'   created:'2018-05-28 12:23:04 +0000'   sessionOnly:TRUE   domain:cas.domain.com   partition:none   path:/ids/   isSecure:FALSE   isHTTPOnly: YES  path:"/ids/" isSecure:FALSE isHTTPOnly: YES> 
    • 如果开启了rememberMe,则会多一条cookie
         <NSHTTPCookie   version:0   name:cas_r_me   value:MTcxMjAwNTFfQlJPV1NFUl8xNTI3NTA2MTQyMDkyXzE1Mjc1MTAxODQ5NzBfMl9iNjgzNTM1N2I5%0D%0AZTZlZGE0NjZjOWI1ODFkMDVmMDAxYw%3D%3D%0D%0A   expiresDate:'2018-06-07 11:23:04 +0000'   created:'2018-05-28 12:23:04 +0000'   sessionOnly:FALSE   domain:cas.domain.com   partition:none   path:/   isSecure:FALSE   isHTTPOnly: YES  path:"/" isSecure:FALSE isHTTPOnly: YES> 
    • APP重新调用server的getUserInfo接口,如果有机制能自动重掉当然更好,类似于web的302
    • 后台正常返回数据
    • app进入首页
  • 防止恶意破解(认证过程)

    • 调用CAS登陆接口失败多次,服务器一般会锁定当前IP或者其他策略,手段就是让用户人工介入输入动态图形验证码。

    • CAS会告知,请求需要验证码

             {     "needVerifyCode": true,     "errorCode": "badVerifyCode",     "tgtTimeoutOrKickoff": false,     "res_code": 1,     "res_message": "errorCode" } 
    • 获取验证码,根据”errorCode”: “badVerifyCode”,

             https://passport.csdn.net/ajax/verifyhandler.ashx?uuid=xxxxxx 
    • 登陆过程改造

             https://cas.domain.com/login.do?userName=66647&password=12345&jsonView=true&rememberMe=true&verifyCode=8562&uuid=9DLCN-DL8CL3  userName:工号 password:密码 jsonView:是否返回json,因为大多情况下,CAS被设计成支持web鉴权 rememberMe:是否开启记住会话 verifyCode:验证码,在某些情况下,服务器认为用户恶意尝试登陆,会有保护策略。 uuid:用来确定验证码的uuid 注:如果后台服务端强大,对验证码的管理不是通过uuid,而是通过会话识别对应,那么登录接口就无需uuid,生成图形验证码的时候也无需uuid 
  • 设计过程(已认证)

    • APP启动调用server接口getUserInfo
    • 获取得到用户信息
    • 进入首页
  • 持久化会话

    • 保存cookie

      保存name为cas_r_me的cookie,如何保存cookie,具体方法不累赘。

    • logout需要清空保存的cookie

      删除本地缓存的所有cookie,具体方法不累赘。

    • 更新cookie

      在每一次APP启动,获取用户信息接口之后,更新保存的cookie,因为cookie有expiresDate,如果一直用第一次登录的那个,就算每天都登录,迟早会失效,这是我们不希望看到的。

    • 使用cookie

      每次打开app,加载本地保存的cookie到会话管理器,并激活生效。

相关 [cas 统一 认证] 推荐:

CAS统一认证中心,针对移动客户端的认证过程设计(APP视角)

- - 神刀安全网
CAS统一认证中心,针对移动客户端的认证过程设计(APP视角). 统一认证中心CAS,用员工工号密码登录. 有个通讯录server系统. 通讯录APP接入两个服务,即登录接CAS,业务接通讯录server. 通讯录APP在用户登录的情况下允许查询其他员工信息. 通讯录server系统有两个接口,用户信息接口,员工信息查询接口.

cas配置单点登录

- - 开源软件 - ITeye博客
        最近一段时间研究的cas,不知道是什么原因,可能自己最近太浮躁了,没有沉下心来去研究,所以一直拖着,将近拖了一周半的时间,上周的周总结,确保一定要解决的问题,今天还是横下心来,处理完这个问题,我是一个对于技术痴迷的人,对于现在研究出来这个结果非常高兴,与大家分享一下:.        注明:本文所讲的至少怎么配置,但是具体的原理和细节会在稍后的时间里更新给大家,如有不对的地方希望大家指出来,共同学习和探讨一下.

[原]CAS原理分析

- -
1、悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作. 悲观锁的实现,往往依靠底层提供的锁机制;悲观锁会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁. 2、乐观锁:假设不会发生并发冲突,每次不加锁而是假设没有冲突而去完成某项操作,只在提交操作时检查是否违反数据完整性. 如果因为冲突失败就重试,直到成功为止.

shiro-cas 单点退出

- - 互联网 - ITeye博客
shiro与CAS集成以后的单点退出. 效果任何一个应用退出以后 所有应用都要重新登录. 实现思路shiro退出系统以后重新定向到cas的退出. 1.重新配置shiro的登出跳转.   shiro退出以后跳转到cas的退出.   cas退出以后通过service参数跳转回应用界面. 2.覆盖shiro的默认退出实现 .

GitHub - casinthecloud/cas-pac4j-oauth-demo: Demo webapps to test CAS/OAuth/OpenID/SAML client support and OAuth server support in CAS version >= 4.0.0

- -

CAS解决单点登录SSO

- - CSDN博客推荐文章
关于CAS很多的原理和基础的配置启动,网上是很多的,我更多是结合我的实践和心得. 需要了解CAS的原理,认证协议,认证流程,可以参考以下文章. 让CAS支持客户端自定义登陆页面——客户端篇. CAS原理与配置-基于CAS的单点登陆的研究(上). 单点登录(SSO)是企业开发的重要问题,在我的毕设项目中,由于要和系统其他开发模块共用用户认证模块,方便共享用户资源,所以需要一个好的SSO解决方案.

CAS和Shiro在spring中集成

- - CSDN博客架构设计推荐文章
shiro是权限管理框架,现在已经会利用它如何控制权限. 为了能够为多个系统提供统一认证入口,又研究了单点登录框架cas. 因为二者都会涉及到对session的管理,所以需要进行集成. Shiro在1.2.0的时候提供了对cas的集成. 因此在项目中添加shiro-cas的依赖. Shiro对cas集成后,cas client的配置更加简单了.

CAS 4.0 单点登录教程

- - ITeye博客
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一. SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 耶鲁大学(yale)开发的单点登录(Single Sign On)系统称为CAS(Central Authentication Service)被设计成一个独立的Web应用程序(cas.war).

CAS实现SSO单点登录原理

- - 非技术 - ITeye博客
CAS实现SSO单点登录原理. CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO ). CAS 开始于 2001 年, 并在 2004 年 12 月正式成为 JA-SIG 的一个项目.

CAS单点登录(SSO)完整教程

- - 互联网 - ITeye博客
CAS单点登录(SSO)完整教程(2012-02-01更新). 教程目的:从头到尾细细道来单点登录服务器及客户端应用的每个步骤. 单点登录(SSO):请看百科解释. 本教程使用的SSO服务器是Yelu大学研发的CAS(Central Authentication Server),. CAS Server版本:cas-server-3.4.3.1、cas-server-3.4.10.