iOS上实现单点登录(SSO)

苹果移动设备iPhone,iPad等从iOS 7.0以后支持企业级SSO。根据测试情况,有如下要点信息:

1. iOS Enterprise SSO基于Kerberos登录认证。iOS内置有Kerberos客户端,可以实现从KDC(Key Distribution Center)获取TGT(Ticket Granting Ticket)。内置Kerberos客户端目前采用了Heimdal的代码;

2. iOS的SSO实现需要安装配置描述文件(Profile),该Profile须配置名为com.apple.sso的PayloadType,具体可参见苹果官网的技术文档:Configuration Profile Key Reference,另外这篇文章对此也有较好的解释。安装此配置文件后,例如通过Safari浏览器访问配置了Kerberos认证的站点,则系统会弹出如下窗口:

iOS-Kerberos-SSO

在上述窗口输入正确密码后,iOS系统可从KDC获取TGT票据,从而实现登录认证。随后打开其他基于同一Realm的站点,或者在Hybrid App(App的Bundle Identifier须添加在前述Profile的AppIdentifierMatches中)的WebView中访问同一Realm内的站点,均可以实现SSO。

3. iOS也可实现跨App的SSO(Cross App SSO),对此需要打通App实现登录信息共享。目前市场上主流的EMM产品如MobileIron, AirWatch, Fiberlink(An IBM Company) Maas360等,可以利用打包App的安全Container实现此功能。

NASA开放API—NASA Open APIs

NASA开放API的目的是让应用开发者能够使用NASA的数据,包括图像数据。

当前的数据类别包括:

  1. 每日天文图片APOD(Astronomy Picture of the Day)
  2. 近地小行星信息,Asteroid-NeoWs (Near Earth Object Web Service)
  3. 地球
  4. 火星探测器拍摄的照片
  5. 专利
  6. 声音

上述数据类别日后应该会逐步扩充。

用获取火星探测器拍摄照片的API写了个测试应用:http://mars.nullthought.net

这个例子比较简单,可以选择不同的火星探测器(好奇号Curiosity、机遇号Opportunity、勇气号Spirit),根据输入的火星日(SOL)获取探测器在该火星日拍摄的照片(API返回结果可能是很多张图片,例子只是选了前面25张,或不到25张)。

Google的图像识别API—Cloud Vision API

Google刚出了图像识别的API(Cloud Vision API),主要实现如下需求(详见此链接):

  1. 给图片打标签
  2. 文字识别OCR
  3. Safe Search Detection(不好翻译,不翻了)
  4. 人脸识别
  5. 地标识别
  6. Logo检测

很残忍地用12306的验证码图片测试了一下,结果发现此API还比较强大,识别效果不错。

测试挑了这个图片:
zebra-12306-CAPTCHA把上图中的斑马扣出来作为输入:

zebra-12306-CAPTCHA-1
调用的方法是给图片打标签,返回结果如下:

vision-response

上面结果中quagga很生僻,指”白氏斑马”,评分是0.53256464,有点儿拿不准。wildlife则是很确定,分值0.95606762。可见,结果很靠谱。