2016-02-05 48 views
4

我有一個Java桌面應用程序。我發現了很多關於Web應用程序的SSO身份驗證的在線資源。我需要一個老派桌面應用程序的相同的東西。基本上,我需要應用程序來打開瀏覽器窗口,讓用戶通過ADFS進行身份驗證,然後獲取令牌。適用於Java桌面應用程序的ADFS/SAML身份驗證

如何在ADFS/SAML中添加SSO身份驗證?

回答

2

我找到了答案。

  1. 首先,桌面應用程序需要顯示一個瀏覽器窗口。這可以使用JavaFX WebView輕鬆實現。我已經使用JavaFX WebView成功測試了Google和ADFS登錄。注意:如果您使用ADFS,則必須將ADFS設置爲使用基於表單的身份驗證。
  2. 需要構建一個助手web服務。 Web服務將提供一種受任何聯合身份驗證機制(SAML2,OAuth等)保護的方法。我一直無法在Java中做到這一點。有一些像JOSSO這樣的解決方案,但它們非常麻煩或嚴重缺乏。但是,C#對聯合身份驗證提供了出色的支持,使其成爲此任務的絕佳選擇。
  3. 當用戶需要認證時,桌面應用會顯示自動調用上述方法的瀏覽器窗口。在聯合授權握手之後,瀏覽器將能夠訪問該方法。此方法告訴桌面應用程序是否允許主叫用戶訪問。
  4. 最後一步是關閉瀏覽器窗口並登錄用戶。

注意:這不是一件容易的事。需要花費大約一週的時間才能完成所有工作。

+0

請記住,嵌入式瀏覽器不被視爲執行SAML2/OpenIDConnect身份驗證的安全方式。父應用程序通常仍然可以讀取瀏覽器和Cookie的內容。這意味着父應用程序可以攔截用戶的憑據 - 它永遠無法看到。出於這個原因,iOS和Andriod爲原生應用程序提供了啓動獨立瀏覽器的機制,然後使用應用程序開發人員在操作系統註冊的系統註冊的uri-schemes重定向迴應用程序。我不相信Java有能力爲自己註冊一個uri-scheme。 – anschoewe

-1

桌面應用程序。沒有瀏覽器。

WS-Fed和SAML是圍繞瀏覽器重定向建立的。

爲什麼你需要SAML?那麼OpenID Connect/OAuth呢?

如果這是一個選項,請查看ADAL Java示例 - Azure Active Directory Authentication Libraries。 ADFS中的OAuth支持有限。 V3.0

您的另一種選擇是使用活動配置文件(Web服務)而不是被動(瀏覽器)。

但這就是WS-Trust不是SAML。

+0

沒有什麼能夠阻止桌面應用程序瀏覽器。我需要SAML2,因爲這是一項要求。我終於明白了。 –

相關問題