Seam 2.1.1 版本添加了对 OpenID 的支持,作为 Seam 中众多外部认证选项的第一个。由于这是一个相对较新的功能,我整理了一个关于我们 OpenID 支持的迷你问答。
什么是 OpenID?
OpenID 是一个社区标准的外部基于网络的认证。基本想法是,当用户访问您的应用程序时,用户可以注册和登录自己的 OpenID,而不是在您的应用程序中注册和维护用户名和密码。可以将其视为用户控制的单点登录。在这里尝试解释 OpenID,我推荐观看 Dave 对 OpenID 的看法 以获得快速概述或 Simon Willison 的 Google Tech Talk 以获得更技术性的介绍。
OpenID 是否会替代我的现有认证机制?
OpenID 可以以很多不同的方式使用,我们尽量使我们的支持尽可能灵活,以支持广泛的各种用途。为此,我们将 OpenID 作为辅助认证机制。OpenID 组件不会替代您现有的身份组件;它与之并列。验证 OpenID 后,OpenID 组件可以立即将用户登录,而无需您的应用程序进行任何额外的工作。或者,您可以根据应用程序特定的方式处理验证后的 OpenID。
我还需要维护用户实体吗?
您不必使用任何形式的本地身份。在某些用途中,如博客评论或投票,可能不需要本地身份,但对于大多数应用程序,您可能希望维护一个本地用户对象,以便将用户特定的数据附加到其中。
OpenID 是否意味着您放弃了对登录过程的控制?
不是的。OpenID 是关于认证而不是授权。OpenID 提供商可以告诉您尝试访问您应用程序的用户是他所声称的人,但这并不一定意味着该用户应该被允许访问您应用程序。盲目接受 OpenID 凭证可能会使您的应用程序容易受到垃圾邮件发送者和其他互联网恶棍的影响,因此您几乎肯定希望对 OpenID 登录和非 OpenID 登录施加相同的注册和登录要求。
我们支持属性交换吗?
目前还没有,但这是我们很想添加的功能之一。
如何在Seam中使用OpenID?
请查看examples/openid目录下的一个简单的Seam应用程序示例,该程序使用OpenID。该应用程序演示了没有本地用户的OpenID使用的最简单形式。若要详细了解如何配置OpenID,请参阅文档。如果您对OpenID支持有任何疑问、问题或建议,请到论坛发帖。