CAS(集中式认证服务,Central Authentication Service)登录在后台开发中使用很广泛,它可以允许一个用户访问多个web app,而只需要提供一次凭证(如用户名和密码)。不仅方便用户跨程序使用系统,也实现了认证和web app分类,提高了安全性。

目前在移动端(本文以iOS为例)涉及到CAS登录的项目主要有两种实现方式:CAS模拟登录和RESTful方式的登录。现总结如下,供以后备查。

1.CAS模拟登录

这种方式相当于模拟登录web端,在请求回web app的登录页面后,返回CAS登录页面,从中获取lt和execution,请求CAS登录接口时,带上service=BaseURL/web-name/shiro-cas,通过这个操作判断是否登录,如果登录,就在web server中种入session,使得之后移动端调用web server的接口可以生效。

1.1 使用的项目

CAS不被公司拥有的、无法提供Restful方式的项目接口。

1.2 登录流程示意图

CAS模拟登录示意图

注:

  • Step1为GET,Step2、3为POST。
  • Step2的j_captcha_response即为验证码。
  • 请求验证码一步非必需。

2.RESTful方式

可以使用Github上的开源demo(https://github.com/acu-dev/objc-cas-client)实现,也可以直接使用AFNetworking实现。本质上流程完全相同。

2.1 登录流程示意图

RESTful方式

注:

  • Step1、2、3均为POST。
2.2 技术细节

3.参考资料: