2013-02-09 153 views
0

我們爲網站提供後端(RESTful)服務,這些服務依賴於跨多個不相關的網站唯一標識相同的用戶。我們一直在使用電子郵件地址作爲唯一標識符,但並非所有網站都始終使用電子郵件地址,尤其是當這些網站使用OpenID身份驗證時。多個網站如何從同一個OpenID用戶/標識中獲得相同的唯一標識符?

那麼,OpenID是否提供了一個唯一的標識符,在多個依賴方(如果用戶使用相同的OpenID進行身份驗證時)是相同的?

如果是這樣,如果目標是當多個不相關的網站每個擁有相同的OpenID用戶時都提供相同的標識符,那麼將指示一系列獨立網站爲我們提供作爲其每個用戶的用戶標識符的內容?

此外,我們的目標是儘可能爲使用我們的API的開發人員提供方便。所以,如果你知道已經解決了這個問題的任何好的API文檔,鏈接到這將是非常有用的。

回答

0

不知道任何關於您的Web服務或其編寫的語言,我不確定我的答案是多麼有幫助,因爲它將是相當一般和較少的技術。

響應標識/授權請求的OpenID提供商將以「聲明的ID」和「標識」以及請求的任何「屬性交換」進行響應。屬性交換信息可以是諸如電子郵件/用戶名/語言/真實名稱/等等,這可能是你正在尋找的東西。

谷歌(作爲一個OpenID提供商)支持查詢一個體面的數量屬性交換信息,並在其文檔中提供的清單: https://developers.google.com/accounts/docs/OpenID#Parameters

的OpenID的身份應該是唯一的用戶,但不能交叉識別他們到不同的網站,即使是從同一個提供商發出。 (它可以是發給它的RP所特有的直接ID)。 查看更多關於此這裏: is openid.claimed_id static?

有了這一切說,這是完全合理的,你作爲API的設計,定義某些信息(如電子郵件地址),需要消耗的WebService 。然後把它交給那些希望使用你的web服務以獲得這些信息(直接詢問用戶,或通過屬性交換等)的各方。


有關OpenID的更多信息,我想看看他們的網站,特別是規格和庫: http://openid.net/specs/openid-authentication-2_0.html http://openid.net/developers/libraries/

圖書館與一些好的文檔爲起點,用包括:


直接實現OpenID身份驗證不會適用於後端web服務(即無法提供憑據)。

爲了滿足您跨多個第三方網站識別同一用戶的需求,您可能需要成爲OpenID 供應商。然後提供進一步的API以允許第三方網站上的功能讓用戶鏈接到您管理的OpenID配置文件。

沒有成爲身份的實際提供者......與第三方共享OpenID身份可能是潛在的安全/隱私問題,或者至少違背OpenID的規範(將交換描述爲共享密鑰在RP和OP之間)。雖然它可能超出了你想要做的範圍,但作爲OpenID提供者,至少可以消除許多隱私問題,因爲用戶必須明確地選擇加入。

我不知道任何處理跨多個第三方網站的用戶的唯一標識,而無需用戶直接交互。我編寫的大多數Web服務都需要提供直接用戶憑據(用戶知道這些憑據),或者必須僅將用戶標識爲特定客戶端的唯一身份。在後一種情況下,用戶身份驗證並不總是必要的,客戶端可以進行一攬子身份驗證,然後提供自己的唯一ID來跟蹤用戶,讓Web服務對實際構成用戶的內容視而不見。不幸的是,您的要求似乎不適合這些常見的情況。


的最後一件事時要考慮的設計你的API ...

提供了獨特的身份信息(即電子郵件地址)的第三方可能會引發一些眉毛在互聯網上的隱私環。特別是如果交易所(廣告/直接付款/等)有任何財務收益,或者信息的使用不明確/不安全或不受歡迎。 http://www.ehow.com/about_5332990_legal-sell-email-list.html http://www.aclu.org/technology-and-liberty/internet-privacy

您可能需要確保你的目標客戶(消費者你的web服務)有權行話他們而言,也可以給他們的用戶,讓他們退出被提交到提供足夠的動力你的服務。並明確你正在處理的信息...

像這樣的問題可能會阻止接受你的API,所以這是值得考慮的。