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

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到会话管理器,并激活生效。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,169评论 11 349
  • CAS最基本的协议过程: 名词解释 Ticket Grangting Ticket(TGT) :TGT是CAS为用...
    llitfk_DockOne阅读 24,584评论 0 13
  • 1. CAS 简介 1.1. What is CAS ? CAS ( Central Authenti...
    人在码途阅读 9,802评论 3 51
  • 浣溪沙 晓梦 晓梦匆匆去也多,堂前有树绿婆娑。怜花心事更成魔。 更忆音容长醒记,几多知已是青娥。猜她夜雪隔银河。
    倚剑白云天阅读 143评论 1 1