SSO
单点登录和 OpenID
5月31日
上周在石家庄做报告,会后有一个同学对 Single Sign-on 技术非常感兴趣,就在会后进行了交流。
该同学说:
以前没有听说过 SSO, 但是一直有个疑问,为什么不能有一个网站将认证信息统一,其它网站都到那里去登录呢?
听到了 Single Sign-on,觉得这不就是解决方案么?如果谁在公网架设一个 SSO网站,不就实现全网的一次注册了么?
我当时回复他,OpenID是实现全网统一认证的解决方案,而不是单点登录,单点登录可以作为 OpenID 实现的基础。OpenID 推行由于公司政治被破坏。
阅读全部内容 »
从 CoSign 看开源软件本地化(7)
5月9日
这应该是计划中 CoSign 本地化系列博文的最后一篇。之所以,要以 CoSign 为题,写一下开源软件本地化,是因为:其一、在我们经历的众多开源产品的定制中,CoSign 本地化最纠结,我们投入的精力最多。在之前的几篇博文中应该已经看出来了。其二、我们在 CoSign 本地化时采用了作为常见的 GetText 方式,非常典型。其三、使用模板以及模板本地化也是在 MVC 框架流行的今天最为重要的页面本地化方式之一,当然也要承认 CoSign 的模板实际上只是字符串替换,没有一些复杂模板中才有的编程能力。
作为这个系列博文的最后一篇,介绍一下 CoSign 的服务页面的本地化过程变迁历史,便于单点登录系统维护者理解群英汇单点登录平台和 CoSign 的异同。
从 CoSign 看开源软件本地化(6)
5月1日
在《从 CoSign 看开源软件本地化(3)》博文中,我们采用 Apache 内容协商,实现的静态页面本地化。这在当时是没有办法的办法。有点金玉其外,败絮其中的感觉:
- 冗余度增加了,本来保持静态页面和模板的一致性就够头痛的了(因为用户可能需要定制模板),这回又大大增加的静态页面的数量
- 采用 Apache 内容协商,需要更改 Apache 的配置,增加了软件配置的难度
在我们实现了 CoSign 核心本地化和模板功能的括中之后,很自然的就想到了将静态页面也纳入到模板的框架中来的想法。
从 CoSign 看开源软件本地化(4)
4月13日
上文中我们提到,仍旧困扰我们的问题是认证因子的错误提示信息没有本地化。
什么是认证因子呢?
- 认证因子是一些独立的程序或脚本,位于 /opt/cosign/factor 目录下
- 认证因子对登录CGI传递的参数(如:用户名/口令,邀请码等)进行认证,认证成功返回0,认证失败返回1。
- 认证失败同时在标准错误(stderr)中输出错误信息。而这些错误信息被登录 CGI 捕获并显示给客户
- 认证因子可以级联,形成所谓双因子认证或多因子认证。例如:口令+指纹识别,口令+虹膜验证 都是非常典型的双因子认证。不过目前还没有客户要求实施这么复杂的认证方式。 ;-)
- 认证因子运行在独立的空间下,无法获取 HTTP 环境,就是说不知道用户的语种选择,所以只能说官话。“英文”?
从上面的介绍我们可以看出来认证因子的本地化,之前的方法都无效。只有从核心实现本地化一种办法可选。
阅读全部内容 »
从 CoSign 看开源软件本地化(3)
4月11日
上文谈到 CoSign 虽然模板的本地化已经很方便了(有了 Include 宏),但是静态页面尚未本地化。那么又哪些静态文件呢?
CoSign 2.x 有两个静态页面:looping.html 和 post_error.html。CoSign 3.x 又增加了一个静态页面:validation_error.html。
- looping.html: 当发生循环重定向时,跳转到该页面
- post_error.html: 当由于单点登录退出导致应用提交过期导致可能的数据丢失,重定向到该说明页面
- validation_error.html: 当重定向的地址和预设地址不匹配跳转到该警告页面
这些页面以静态页面出现,而不是模板文件由CGI调用,因此其本地化就不可能用之前的运行时模板选择以及模板中的 include 宏来实现多语种。那么该怎么办呢?
从 CoSign 看开源软件本地化(2)
4月8日
上文提到通过根据浏览器支持的语种列表,自适应的选择页面模板,初步实现了 CoSign 的本地化。但是这样将本来就非常冗余的页面模板扩大了一倍。我们在模板定制过程中,愈来越感觉到消除页面中冗余的必要性。这就是我们在2008年紧接下来开发的一个功能:扩展 CoSign 的模板宏,使得模板可以嵌套。
阅读全部内容 »
从 CoSign 看开源软件本地化(1)
4月7日
开源软件本地化,一般来说都是 a piece of cake。但是 CoSign (密歇根大学开发的单点登录系统)的本地化却是让我们大费周折,很是经历一些往复。
CoSign 是用 C 语言开发的,其 web 服务也是通过 C 语言开发的 CGI 来提供,而Web 页面是通过页面模板加载经过处理后形成的。CoSign 本身并没有提供多语言支持,但是模板可以用户自定义,就是说可以用中文来写 web 页面模板。
在我们最早的版本中,采用的是:多模板(根据语种自适应选择),以及 Apache 的内容协商实现的多语种支持。
在最近我们通过 Gettext 在底层实现了本地化,又通过精简模板,静态页面模板化等方法让单点登录页面定制更简单。
我们在 CoSign 本地化中所经历的,在我们众多开源产品的本地化中是最复杂和独特的,因此撰文共享。
单点登录认证系统升级
4月7日
最近我们对单点登录做了如下重大改进:
- 防范暴力口令破解,增加对口令重试次数的限制。当口令失败次数每分钟累计次数超过阈值,禁止用户访问认证系统。
- 增加新的认证方式:邀请码认证。
- 支持用邮件地址登录。一个前提是:该邮件地址在用户数据库中是唯一的,即只用该邮件地址注册过一次。
- 更好的本地化。减少需要定制的模板数量,实现对认证返回信息的本地化,…
暂时我们只对 CoSign3 增加了这些新功能,CoSign2暂时不支持。
单点登录架构升级手册
3月16日
CoSign 3.x 和之前的版本 CoSign 2.x 不兼容,如果贸然升级,会导致出现应用无法访问的故障。因此 CoSign 3.x 采用了另外的软件包名称,这样在使用 apt-get 升级的时候,不会“被升级”。

最新评论