什么跨域单点登录实现最能解决我的问题?
我有两个域(xy.com和yz.com),它们已经拥有自己的用户数据库,并且已经分别实现了用户身份验证。最近,需要实施CDSSO,以便用户每次尝试从两个域访问资源时都不必登录。
理想情况下,我希望使用的CDSSO实现应允许自定义身份验证实现,因为我希望在身份验证期间调用两个域提供的API,以确认用户是否存在于至少一个域用户数据库中。
我一直在关注Sun的OpenSSO,它似乎提供了一种扩展其AMLoginModule类的方法,但这似乎是一件很长的事情,更令人讨厌的是它们似乎坚持使用GlassFish。
我还考虑开发定制CDSSO来解决我们的需求。这是可取的吗?
使用Suns OpenSSO考虑到不同的用户数据库是否可以实现这一点,因为我不需要使用OpenSSO所需的用户数据库?
有没有更简单的方法来实现我打算实现的目标?
此外,两个域上存在的两个应用程序都是使用PHP开发的。考虑到Suns OpenSSO基于Java EE,这有何影响?
从头到尾实施OpenSSO和/或任何其他SSO实施是否有明确的步骤?
答案 0 :(得分:0)
我建议您使用simpleSAMLphp来部署身份提供者和2个服务提供者(针对每个应用)。
SimpleSAMLphp允许您选择多个身份验证源,并且不难构建自己的参与2个数据库的authsource。
我在SAML的经验表明,由于以下几个原因,不在一个独特的authsource中整合用户身份的事实是一个坏主意: *身份冲突:如果您使用不同的邮件注册了相同的用户(如果这是用于识别用户的字段,并且您尝试访问)会发生什么?您每次都可以登录不同的帐户。 *如果您添加第3项服务会发生什么,您是否会添加第3个数据库 *如果用户在一个应用程序中更改其数据,另一个将无法同步,会发生什么? *如果用户使用不同的密码会发生什么?
我建议您在添加SAML支持之前执行迁移过程,并为您的所有身份构建唯一的数据库,并统一两个站点的注册/编辑配置文件/密码恢复过程。
SimpleSAMLphp有很好的文档,但我可以提供与我建议的过程相关的任何文档。