2017-07-22 131 views
1

我正在使用將ADFS登錄頁面與我的應用程序集成的功能。使用ADFS的基於令牌的身份驗證

流量

用戶會嘗試訪問頁面。這裏系統會嘗試認證用戶。

系統將用戶重定向到ADFS登錄頁面。

用戶將輸入登錄信息。如果用戶通過身份驗證,則用戶將通過授權令牌信息重定向迴應用程序。

當頁面重定向回來時,我正面臨讀取令牌信息的困難。

我試圖

我能夠頁面重定向到ADFS登錄頁面,也可以重定向回我的系統,如果用戶使用的是以下URL格式認證:

https://adfs-domain-name/adfs/ls

請找回下面的代碼片段,我回到頁面後讀取令牌信息。

ClaimsPrincipal claimsPrincipal = Thread.CurrentPrincipal as ClaimsPrincipal; 
bool IsAuthenticated = claimsPrincipal.Identity.IsAuthenticated; 
int ClaimCount = claimsPrincipal.Claims.Count(); 

這裏我將IsAuthenticated設置爲false,並將ClaimCount設置爲0結果。

我的代碼或連接ADFS登錄頁面的方式有什麼不正確嗎?

任何人都可以幫助我解決這個問題嗎?

請讓我知道,如果您有任何疑慮或查詢,或者我缺少一些東西。

+0

您如何連接到ADFS? WS-美聯儲? SAML?你檢查過ADFS RP重定向URL嗎?如果使用例如跟蹤連接FF SAML Trace,你看到了這些說法嗎?什麼版本的.NET? – nzpcmad

+0

我正在使用SAML作爲協議。我無法獲得索賠詳情。從ADFS登錄頁面成功登錄後,該頁面將發回到我的應用程序。 –

+0

在ADFS方面針對該RP配置了哪些聲明?那些AD屬性是否有值? ADFS不會傳遞空值。 – nzpcmad

回答

0

總之,我會推薦以下教程: https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/development/enabling-openid-connect-with-ad-fs-2016 我遵循了那裏的步驟,並得到它的工作(使用OAuth2/OpenID連接)。該網站上還有一些其他有趣的資源。

一些更多的指針:

1)對於使用的OAuth2登錄URL的ADFS服務器上應該是這樣的: https://adfs.contoso.com/adfs/oauth2/authorize?[parameters]

的URL參數是很好的記錄在這裏: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code

2 )然後,您可以將ADAL庫用於前端和後端代碼。實質上,前端代碼將把上述登錄URL放在一起,並將令牌保存在瀏覽器的會話存儲中,以便隨每個請求一起發送。後端庫將驗證並解碼令牌(進入ClaimsPrincipal)。你可以在這裏找到合適的庫組件: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-authentication-libraries

啊,是啊,我知道這些組件和文檔描述了Azure的AD(ADFS在雲中),但它們運行有什麼本質上是在Windows服務器上一樣ADFS 4.0

相關問題