2015-11-05 53 views
0

我有一個用戶登錄的客戶端應用程序(Windows)。在這個應用程序中,用戶將希望使用單點登錄(SAML)訪問遠程網站,並且將由Microsoft WIF進行身份驗證。要做到這一點,用戶將點擊一個打開本地網頁瀏覽器的按鈕,生成一個SAML令牌(包含用戶名和角色等),並向遠程網站發出HTTP POST以訪問它,並將其簽入。安全地在客戶端應用程序中生成SAML2令牌,無需安裝簽名證書

我希望用戶能夠根據Windows應用程序的憑據自動登錄。

我大致知道如何生成SAML令牌,但假設這需要在本地PC上安裝簽名證書,該證書需要安裝到我公司的所有PC中。

安裝此證書似乎不太正確。我還能如何安全地允許用戶生成SAML令牌,服務提供商將會接受(通過單點登錄)?

UPDATE:

的用戶沒有通過驗證到使用Windows身份驗證(Kerberos的)Windows應用程序,我們做一個自定義的SQL調用用戶名/密碼的數據庫。

在win應用程序中,我們將知道用戶名和他們的角色,因此可以從此生成聲明,或將其傳遞給遠程STS以生成和簽署SAML令牌。但是再次將這些數據傳遞給STS似乎又完全錯誤了。

回答

1

簽名證書不得在用戶桌面上。否則,任何用戶都可能使用所需的用戶標識生成SAML令牌。

你想要的是一個安全令牌服務(STS):一個身份提供者,它將通過Kerberos驗證你的用戶(因爲你想重新使用登錄用戶的身份)並給你一個簽名的SAML令牌。

所有這些都可以在您的應用程序中打開Web視圖時完成。起始url應該是IDP啓動的SSO的身份提供者端點,並帶有用於標識要訪問的服務的url參數。

+0

win應用程序不使用Windows身份驗證(Kerberos),所以STS不能使用Kerberos(我認爲)。 –

+0

我可以將用戶名從win應用程序傳遞給STS,STS將關閉並填充聲明(角色)並生成/簽署SAML令牌發送出去。但是,如何贏得應用程序安全地將用戶名傳遞給STS? –

+0

您必須向STS進行身份驗證才能安全地傳遞用戶的身份。如果您的工作站是Active Directory域的一部分,則可以使用Kerberos向STS進行身份驗證。 –

相關問題