4

[编辑澄清##的问题。也许你可以帮我找到一个合适的解决方案,给我一个方向或告诉我,解决方案已经存在。单点登录的Web服务,WCS,WFS,WMS(利用Geoserver),</p> <p>我试图实现单点登录(SSO)Web应用程序等

场景:GeoExt(基于地理数据/地图的应用的ExtJS)webapp(仅限JavaScript)将部署在客户的Web服务器上。客户将定义“usecases”或“profiles”:一组服务,如webservices,GeoServer WFS,WCS,Google Maps等。这些服务可能需要额外的认证,如凭证或密钥。

用户(必须注册并申请“个人资料”)可以(在应用程序被授予后尽快)检索访问与他的个人资料关联的服务所需的凭据。就像在正常的SSO解决方案中一样,用户不需要为他自己输入每个凭证/密钥来使用服务。

[#不从这里改变...#]

主要问题:我无法修改的第三方服务(如谷歌)添加SSO机制。

我想有一个解决方案,允许用户登录一次,以获得所需的所有服务。我的第一个想法是存储所有必需的凭据或密钥的存储库。用户登录并可以检索所有需要的信息以访问其他服务。有人知道现有的实现,论文,可能是这种服务的实现吗?

其他要求:JS应用程序和存储库之间的通信必须是安全的。凭证必须以安全的方式存储。但JS应用程序必须能够使用它们来访问服务(没有机会安全地将解密密钥存储在JS应用程序中,呃?* g)。

由于涉及的服务的使用条款,代理不是一种选择。

+0

现在还不清楚:每个用户在每个Web服务上都有自己的帐户,或者您会集中提供哪些内容?当你说“通用web服务”时,你是否真的想要一个可扩展的机制? AFAIK没有像通用的Web服务那样的东西。 – 2010-03-19 16:42:13

+0

我编辑了这个问题。我希望我这次表现得更好。 =) – lajuette 2010-03-19 17:57:57

回答

0

Google已经有几个SSO机制 - 它支持SAML acting as a Service Provider(SP)(在某些情况下)和OpenID when acting as an Identity Provider(IDP)。你不提,你需要与集成哪些其他第三方服务,但如果是使用其中任一兼容你可以:

  1. 建立一个SAML IDP并使用此SSO谷歌和你的其他应用
  2. 使用谷歌作为您的OpenID IDP(因为此网站),并使用此SSO到其他应用
+0

我知道像SAML,OpenID或OpenSSO等其他服务的机制。据我所知,在我的情况下,他们不会帮助我。 我想要整合的服务大多是商业网站功能服务或网络服务,这些服务或网络服务需要认证但与任何SSO工具箱不兼容。他们通常只通过http提供基本的身份验证。其中一些服务是内部开发的,可以改装,但不是全部。 就像我说的: 在大多数情况下,不可能修改服务。 – lajuette 2010-03-12 08:26:13

1

是否访问web服务必须是用户上下文或者是它们的通用web服务?

如果不是,您可以在Web服务器上处理与第三方Web服务的身份验证和通信,并将消息从服​​务器发送到客户端。通过这种方式,您可以简单地为第三方提供商使用服务帐户,而不必跟踪和存储用户帐户的密码&。

+0

服务是通用的web服务,不在我的控制之下。某些服务可能禁止代理(或“路由”)请求。 – lajuette 2010-03-19 06:48:10

0

我认为你应该包装/代理每个需要实现的Web服务。这可能听起来像是每项服务的很多工作,但您可能能够找到共同的主题。

详细信息: 从Web服务器提供一个WS,它接受用户的配置文件标识,然后用正确的凭据(从服务器端存储中取回)实际调用真实的Web服务。因此,客户端中的用户不需要提供证书。客户端JavaScript只需要调用您的服务器。您可以通过包装其他服务来实现您的SSO API。

注意:仔细检查每个Web服务的“合理使用”许可证。其中一些会检测来自单个IP的大量呼叫违反了他们的服务协议,然后阻止或黑名单服务器。

+0

正如我之前所说:“有些服务可能会禁止代理(或”路由“)请求。”我无法包装这些服务,因为每个客户端都会使用不同的服务和他自己的凭据。我可以编写一个可扩展的接口,为每个服务提供适配器,但这也不是一种选择。我们谈论的不是IT专家的客户。 – lajuette 2010-03-20 10:10:42

0

我们做了类似的事情,用Drupal作为框架。 http://www.drupal.org

您可以使用Drupal的内置身份验证,或使用Shibboleth的SSO解决方案以及其模块http://drupal.org/project/shib_auth或可作为核心模块的OpenID。

一旦出现,你的世界开辟了通过许多方法,drupal_http_request或http://drupal.org/project/rest_client REST客户端模块,或WSRP http://drupal.org/project/wsrp甚至不寒而栗一些开发者所做的消费服务,我们通过iframe消耗他们的服务。最好的部分是有很多已经创建消耗现有的服务,如Gmaps http://drupal.org/project/gmap和亚马逊http://drupal.org/project/amazon

希望这是helfpul模块的,我很乐意进一步阐述,因为我们在很多消费服务不同的方式。干杯。

+0

我无法包装将使用的服务,我无法修改它们,也不知道客户想要使用哪些服务。 – lajuette 2010-03-20 10:12:24