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