2014-01-22 116 views
1

我正在尋找單點登錄爲我的應用程序建立在JavaScript(沒有服務器端語言)。單點登錄ADFS

要求:

  1. 代理登錄Windows(用戶集成到Active Directory)
  2. 打開我的網頁
  3. 基於誰登錄到Windows,我的應用程序去AD和拉一些用戶 指定數據(例如電子郵件,電話)

我該怎麼辦呢?

根據我的理解,我將需要ADFS。 所以:

  1. 用戶進入到我的網頁

  2. 我的網頁調用某些Web服務或Web應用程序(這是建立在C#)

  3. 這將會對AD FS進行身份驗證和索賠

  4. 要麼索取電話號碼和電子郵件,要麼獲取用戶名和查詢AD用於電話和電子郵件

  5. 將數據返回到我的網頁(建於JavaScript)

似乎有什麼錯在我的理解!

請建議更合適的解決方案根據我的要求

+0

我認爲最安全的位置依賴於服務器上。沒有它,這可能是不可能的。即使是這樣,你也會嘗試處理所有的安全客戶端,這似乎很奇怪。這聽起來對我來說很脆弱。特別是你有什麼理由不想使用任何服務器端語言? – Kulahan

回答

3

坦率地說,我不能想辦法讓它不作爲服務器端處理工作。這是因爲ADFS使用的ws聯邦協議不僅僅是返回索賠。

這是關於回到SAML令牌。令牌包含聲明,但最重要的是它使用XMLDsig簽名爲。你如何驗證令牌是第一個大問題。但是肯定有外部庫允許這樣做。

但是,通過在瀏覽器中修改腳本,可以輕鬆繞過此類身份驗證。這是因爲ws聯邦會停止您獲取令牌的位置,然後由您來交換令牌以獲取實際身份。只有在客戶端進行處理時,這不起作用。

3

ADFS 3不支持OAuth2隱式配置文件,這將是一個選項,但仍然需要驗證服務器上的令牌以避免會話固定。

您可以設置類似AuthorizationServer支持的oauth2/ID連接隱含的輪廓 http://leastprivilege.com/2013/09/19/adding-oauth2-to-adfs-and-thus-bridging-the-gap-between-modern-applications-and-enterprise-back-ends/

另一種選擇是使用類似Auth0(聲明:我Auth0工作),這也支持了OAuth2/ID連接implciit輪廓。在這種情況下,您不需要ADFS,您在網絡上安裝的連接器/代理不需要打開防火牆或任何設備,並且它支持適用於JavaScript應用程序的隱式配置文件。這是一個單頁的應用程序的教程的例子(如果你創建一個帳戶,將定製您的憑據DOC):

https://docs.auth0.com/singlepageapp-tutorial