2017-10-05 36 views
0

我想建立一個單一的登錄界面(與角),這應該是一種獨立的,因此它可以用來和/嵌入任何網頁上。如何構建單一登錄應用程序(電子郵件和通行證)?

E.g.客戶可以將其嵌入到其索引頁面上,並且代碼/函數應該從JavaScript API傳遞並構建UI和連接。

我'想着像單點登錄應用程序,允許用戶通過他們的Facebook賬號在其他網站上互動的概念。 有點像Facebook連接。

什麼是達到這個最好的方法?首選技術是Angular2,Angular4

+0

許多單一的登錄機制您參考使用的OAuth2。實現你自己有點痛苦,所以我建議找一個已經存在的庫 – Basic

+0

我已經有一個帶有角度的登錄應用(郵件和傳遞),它使用JWT Auth - 向服務器發送憑證並獲取令牌作爲迴應。問題是我怎樣才能將它作爲單一登錄提供,以便客戶可以嵌入它。 換句話說,如何將它提供給客戶...作爲不是我想要的並且對我來說沒有意義的鏈接......我想到了一種在頭部添加的腳本'腳本src =「myscripts.js」>'和scriptlet(javascript函數),可以嵌入調用並使用API​​。這是否是一個正確的場景? –

+1

我明白,但並不那麼簡單。當然,您可以讓第三方應用程序(3PA)通過證書(通過SSL?),然後中繼身份驗證令牌。現在3PA可以模擬你的用戶,你不會知道它們的區別。受損的3PA =所有用戶都易受攻擊。你有意創造一箇中間人的情況。這就是爲什麼OAuth和其他協議可以避免這些問題。在這種情況下,3PA建立了通信,但用戶的瀏覽器直接與您的服務器通信以進行身份​​驗證,然後令牌被委派給3P。這樣,沒有人可以竊取用戶的信用。 – Basic

回答

1

[不完全是一個答案,但太長評論]

我認爲根本不匹配的是,你問「我該怎麼辦權威性」和我「有很多方法,有不同的成本/收益,你需要評估它們併爲你的用例選擇正確的方法。」OAuth2是一個明智的起點,但其他許多存在。「

之後,發現做的工作是(相對)簡單的庫。

所以......有許多的事情,我想你會需要得到確定下來,然後才能繼續。

我最初的問題是:

  • 什麼級別的安全性我們需要爲最終用戶提供考慮到真實暴露的數據。
  • 誰是我們的敵人?黑客?民族國家?心懷不滿的員工呢?
  • 我們怎麼來減輕對上述所有的?
  • 什麼記錄和審計,將需要使違反後,我們可以明白髮生了什麼。
  • 如果我們用第三部分IAM服務,什麼樣的數據它希望傳遞給它?它返回。它是否自動處理3路驗證(我們,最終用戶,第三方)還是必須圍繞它進行構建?如果是後者,IAM提供者是否具有包含我們所需功能的SDK /類似。

廣招,我建議做這樣一個架構:

  • 用戶希望在第三方應用程序來驗證
  • 3PA將用戶重定向到你的服務器/ API/IAM平臺,用戶登錄(或回收活動會話)。
  • 您的系統提示用戶允許3PA訪問(的一個子集?)你的數據。
  • 假設用戶批准,將用戶重定向回3PA,與身份驗證令牌特定於該3PA沿。

然後,3PA可以使用該標記代表用戶行動,直到標記被取消。

優點:

  • 3PA永遠不會看到用戶憑據,只有一個成功的批准後得知其令牌。
  • 令牌是特定的每項服務,這意味着您可以撤銷一個站點的權限而無需撤消所有服務。
  • 用戶可以跟蹤誰授權訪問他們的詳細信息。
  • 您可以跟蹤哪些系統正在向您進行身份驗證(取決於您在初始連接時要求提供多少信息,以及3PA是否需要預先註冊並獲取身份證以便能夠請求身份驗證)。

我所描述的基本上是一個簡約的OAuth工作流程。你可以自己去實現它,但是有很多陷阱,我不相信你完全理解你所嘗試的安全含義,所以我肯定會建議使用一個已知好的過程而不是嘗試推出自己的。

假設OAuth符合您的使用案例....我從來沒有必要從Angular做到這一點,所以不能推薦圖書館,但快速Google顯示數十個...在結果頂部附近是一個簡單的教程:https://devcenter.kinvey.com/angular/tutorials/how-to-implement-safe-signin-via-oauth

而且一個潛在的庫:https://github.com/oauthjs/angular-oauth2(雖然一眼,似乎沒有處理截獲的憑據的情況非常好)

相關問題