DotNetCasClient 如何獲取Cas服務器返回的attributes中的數據


最近開始接觸做與其它認證系統的集成,其中有個是與某學校的CAS服務器集成。cas服務器認證成功后返回的數據格式如下:

其中紅色部分是我需要取出來用於識別用戶身份的數據。

一開始,我根據網上的教程,引用了DotNetCasClient.dll,並對web.config進行了一些配置,首先,在configuration配置節下,增加紅色部分內容,主要是對cas做一些基本的配置

 

配置完成后,在登錄頁面,我們通過如下方式獲取用戶數據

所有工作做完以后,發現問題來了,登錄以后,我方系統根本就無法獲取到Assertion.Attributes里的東西,這里面總是空的。后來在網上包含baidu和google進行了查詢都未能找到解決辦法。無奈,可好跟蹤源代碼了。所以,我從 https://github.com/apereo/dotnet-cas-client 上下載了源代碼,並新創建了一個新的最簡單的測試站點。

經過跟蹤源代碼后發現,原來,我方收到的數據是正確的,但是在DotNetCasClient 進行反序列化的時候,把<cas:atrributes>及節點下的所有數據都丟失了。所以默認可能取到<cas:user>節點下的數據。

為了實現DotNetCasClient 能獲取到<cas:attributes>我們必須對源代碼進行改進。具體改動點如下:

通過這樣子的改造,在應用程序中,我們的Assertion.Attributes里就有值了,然后我們就可以使用這里面的值,做一些與業務相關的操作和驗證。

 

本人極少寫博客,但這個問題感覺網上的答案比較少,特別是.net方面的,所以特寫此記錄,以期能對遇到同樣問題的朋友有所幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM