2

我正在嘗試像Google一樣進行登錄,其中包括跨域身份驗證。當登錄到google.com時,您將自動登錄像youtube.com這樣的不同域名。對我來說,它看起來像:使用EasyXDM進行跨域身份驗證

  • 你在accounts.google.com輸入憑據
  • 谷歌通過AJAX發送一個請求,以檢查他們
  • ,如果他們是正確的,它1.設置一個cookie和2。向其他域(如YouTube)發送請求併發送一些標識符(SID或令牌?),併爲這些域設置Cookie
  • 所有其他域也具有cookie後Google會將您重定向回來的位置

我在研究很多,看起來easyXDM(http://easyxdm.net/wp/)是一個很好的解決方案(你認爲它是什麼?)。但我不確定如何進行跨域身份驗證。當用戶正確登錄時,我是否應該向其他域請求並傳遞SID並在域上創建cookie?或者它不安全?或者,我應該在登錄後爲用戶創建令牌並將其存儲在我的數據庫中。然後將令牌發送到所有域以驗證他,然後刪除令牌?

我發現的其他一些東西是通過iframe在iframes中的解決方案..也谷歌analytics.js(https://developers.google.com/analytics/devguides/collection/analyticsjs/cross-domain)看起來令人興奮......但我看到它甚至在easyXDM中被集成。

我希望有些人,如果你們有這些東西的經驗。我很想知道你在想什麼:) gerti

回答

1

你想要的是OAuth2(這是你指的協議 - Google的登錄名是什麼)。

如果你正在尋找一個簡單的解決方案,你可能想嘗試使用類似Stormpath + IDsite。這是一個免費的API服務,您可以註冊/使用。

基本上,他們將爲您提供一個域名,當您希望他們創建帳戶或登錄時重定向您的用戶。他們將處理所有身份驗證/授權(跨域),並將您發送回具有JSON Web令牌(JWT)的經過身份驗證的用戶。

Stormpath有多種編程語言的一堆庫,你可以在這裏開始:https://docs.stormpath.com/home/

其他的解決方案一般的人去需要相當多的時間/精力來獲得運行。實際上,我幫助構建了很多Stormpath庫(在Node/Python中),所以我對它非常熟悉 - 在簡單性方面你無法打敗它。

+0

謝謝,我會看看Stormpath。但關於OAuth ..我也認爲這將是一個很好的解決方案。但它似乎更像是第三方授權。當您第一次訪問時,您需要確認每個域的授權。我錯了嗎? – gerti

+0

這是正確的 - 如果你真的想要'單點登錄',你需要實現SAML - 但這通常比大多數人需要的方式複雜。通過使用token auth =)實現流暢的OAuth2流程,您可以'欺騙'用戶認爲他們擁有SSO – rdegges