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。可见,结果很靠谱。

SpaceX火箭的栅格翼(Grid fin)

SpaceX的火箭可回收系统(SpaceX reusable launch system)的目标是让火箭能够重复使用,该回收系统目前被用于Falcon 9 v1.1和Falcon Heavy火箭。回收系统的一个明显特征就是采用了栅格翼(Grid fin)。

spacex-drone-ship-9

图:Falcon 9火箭上展开的栅格翼

SpaceX火箭栅格翼的首次测试出现在2014年6月17日。测试火箭上升1000米后,然后徐徐成功降落。视频中可清晰地看到,栅格翼在上升过程中是收起的,开始降落时展开,精准控制火箭降落。此链接对回收系统用于Falcon 9火箭的研究(Falcon 9 Reusable Development Vehicle—F9R Dev)测试有详细跟踪描述。

在2015年1月10日,Falcon 9火箭成功发射,其携带的为国际空间站(ISS)运送货物的龙飞船(Dragon ship)也同样成功完成任务,但火箭在随后进行海面移动平台降落回收时失败。对于此次火箭发射回收中栅格翼的作用,官方描述是:“A key upgrade to enable precision targeting of the Falcon 9 all the way to touchdown is the addition of four hypersonic grid fins placed in an X-wing configuration around the vehicle, stowed on ascent and deployed on reentry to control the stage’s lift vector. Each fin moves independently for roll, pitch and yaw, and combined with the engine gimbaling, will allow for precision landing – first on the autonomous spaceport drone ship, and eventually on land.”

栅格翼是苏联人在上世纪70年代发展起来的技术,最早用于弹道导弹控制。研究和实践证明,栅格翼的一个重要特征就是能够比传统平板翼(Planar fin)更好地控制飞行器,让飞行器更不容易失速(The small chord length of grid fins also makes them less likely to stall at high angles of attack. This resistance to stall increases the control effectiveness of grid fins compared to conventional planar fins.具体参见这个2006年的旧帖Missile Grid Fins—很好的介绍栅格翼的知识帖)。通俗地讲,就是栅格翼可让火箭更不容易栽跟头,这也是Falcon 9火箭在降落时为何要打开栅格翼的重要原因。

栅格翼的另外一个空气动力特征就是在亚音速和超音速状态下,其波阻(Wave drag)不高于传统平板翼,也可以说能够低于平板翼。但是在马赫数为1,即所谓transonic状态时,其波阻却明显升高。栅格翼外形特征与减阻的关系,此论文有所研究。