在与 Domino 做 SSO 的时候,经常会使用 LTPA  的方式,本文描述了它的生成原理,通过它我们可以自己编码生成身份认证的 cookie,实现 SSO。

首先,这个 cookie 由以下部分组成:

  • LTPA token 版本(4字节)
  • 创建时间(8字节)
  • 过期时间(8字节)
  • 用户名(可变长度)
  • Domino LTPA 密钥(20字节)

接下来分别说明各部分的具体内容:

  • LTPA token 版本目前 Domino 只有一种值:0x0001 0x0123
  • 创建时间和过期时间为以十六进制方式表示的 Unix time,例如 2009-04-09 13:52:42 (GMT +8) = 1239256362 = 49DD8D2A。过期时间为 创建时间 + SSO 配置文档的过期时间(LTPA_TokenExpiration域)
  • 用户名为 Names 中用户文档的 FullName 域值
  • Domino LTPA 密钥通过 Base64编码后,保存在 SSO 配置文档的 LTPA_DominoSecret 域中

ltpa-01

在这里当然不能将密钥直接发送给浏览器,所以将上述部分合并起来(如上图),计算 SHA-1 校验和。

ltpa-02

然后用 SHA-1 校验和替换掉 Domino LTPA 密钥,最后再将内容通过 Base64 编码,形成最终的 cookie 发送给浏览器(如上图)。这样如果 cookie 中的任何内容被修改,校验和就不对了,达到了防篡改的效果。

参考资料:Creating a session for a userThe Domino cookie authenticationLTPAUtils

原本计划于08年底发布的 ND8.5 来迟了一周,终于在09年初发布了。关键新特性如下:

  • ID 管理功能增强: 共享登录(登录 Windows 后自动登录 Notes,而且不需要密码相同)、ID Vault
  • 通过新增的 DAOS(Domino Attachment and Object Service) 特性,减少磁盘存储的开销
  • XPage 和基于 Eclipse 的新设计端
  • 日历增强:可以导入其他外部日历,如 Google 日历和 iCal 格式的日历
  • Notes Traveler 增加对 Nokia S60 平台的支持(原来仅支持 Windows Mobile 设备)
  • 新增 DCT(Domino Configuration Tuner ) 工具,帮助管理员分析系统存在的问题
  • 增加对 Mac OS 10.5 和 Ubuntu Linux 的支持(我非工作时用的两个操作系统,嘿嘿)

英文版本已经可以下载,中文版将于 1月15日推出。

IBM US Announcement Letter, Nokia extends IBM Lotus email access to 80 million mobile phones