1 概述 數通暢聯某綜合SOA集成項目的統一身份認證工作,需要第三方系統配合進行單點登錄的配置改造,在項目中有需要進行單點登錄配置的.NET應用系統,本文專門記錄.NET應用和AEAI CAS的集成過程步驟,為後續類似的統一認證配置實現提供參考指導。 2 預期讀者 數通暢聯新員工 廣大技術愛好者 ...
1 概述
數通暢聯某綜合SOA集成項目的統一身份認證工作,需要第三方系統配合進行單點登錄的配置改造,在項目中有需要進行單點登錄配置的.NET應用系統,本文專門記錄.NET應用和AEAI CAS的集成過程步驟,為後續類似的統一認證配置實現提供參考指導。
2 預期讀者
數通暢聯新員工
廣大技術愛好者
3 環境信息
操作系統:Windows Server 2008
第三方系統.NET Framework 版本:V4.0
4 名詞解釋
AEAI CAS:是數通暢聯基於開源Jasig CAS擴展開發提供的統一認證平臺,經過多年的實踐和積累,通過提供統一的認證服務、授權服務、集中管理用戶信息;AEAI CAS統一身份認證平臺功能包括:賬號同步模塊及介面、單點登錄客戶端配置、賬號密碼管理功能。AEAI CAS的功能架構如下圖:
.Net: .NET是微軟的新一代技術平臺,為敏捷商務構建互聯互通的應用系統,這些系統是基於標準的,聯通的,適應變化的,穩定的和高性能的。從技術的角度,一個.NET應用是一個運行於.NET Framework之上的應用程式。如果一個應用程式跟.NET Framework無關,它就不能叫做.NET程式。比如,僅僅使用了XML並不就是.NET應用,僅僅使用SOAP SDK調用一個Web Service也不是.NET應用。.NET是基於Windows操作系統運行的操作平臺,應用於互聯網的分散式。
5 配置過程
5.1 添加動態鏈接庫
在進行CAS認證配置前,需要先添加CAS 的客戶端文件即相關的動態鏈接庫.dll文件,放置於.NET應用的bin目錄,如下圖:
5.2 配置web.config
在修改web.config文件之前,先瞭解web.config文件中一些標簽的含義。
5.2.1 web.config詳解
Web.config 文件是一個XML文本文件,它用來儲存 ASP.NET Web 應用程式的配置信息(如最常用的設置ASP.NET Web 應用程式的身份驗證方式),它可以出現在應用程式的每一個目錄中。當你通過.NET新建一個Web應用程式後,預設情況下會在根目錄自動創建一個預設的Web.config文件,包括預設的配置設置,所有的子目錄都繼承它的配置設置。如果你想修改子目錄的配置設置,你可以在該子目錄下新建一個Web.config文件。它可以提供除從父目錄繼承的配置信息以外的配置信息,也可以重寫或修改父目錄中定義的設置。
1.web.config
是以XML文件規範存儲,配置文件分為以下格式:
a)configSections 位於配置文件的頂部配置節處理程式聲明;
b)appSetting 可以定義應用程式的全局常量設置等信息;
c)system.Web 控制Asp.net運行時的行為;
d)sectionGroup 可以自定義分組,可以放到內部或其它標記的內部;
2.配置節的每一節
a)configuration 根元素,其它節都是在它的內部.
b)appSetting 此節用於定義應用程式設置項。
對一些不確定設置,還可以讓用戶根據自己實際情況自己設置 例如:
c)compilation
d)customErrors
e)globalization
f)sessionState
g) authentication
3.重點節點
a)authentication
作用:配置 ASP.NET 身份驗證支持(為Windows、Forms、PassPort、None四種)。該元素只能在電腦、站點或應用程式級別聲明。
< authentication> 元素必需與 節配合使用。
示例:以下示例為基於窗體(Forms)的身份驗證配置站點,當沒有登陸的用戶訪問需要身份驗證的網頁,網頁自動跳轉到登陸網頁。
b)authorization
作用:控制對 URL 資源的客戶端訪問(如允許匿名用戶訪問)。此元素可以在任何級別(電腦、站點、應用程式、子目錄或頁)上聲明。必需與 節配合使用。 示例:以下示例禁止匿名用戶的訪問
c)sessionState
為當前應用程式配置會話狀態設置(如設置是否啟用會話狀態,會話狀態保存位置)。
5.2.2 CAS配置具體步驟
在web.config中添加CAS的相關配置信息 1.首先在configSections節下添加配置信息
2.然後在根節點configuration下添加
3.然後進行Forms的認證配置
4.然後在system.webServer下的modules節點下添加
5.最後在httpModules節下添加
5.2.3 相關問題及解決辦法
問題一:配置後,經過單點登錄的攔截遇到迴圈重定向問題 解決:
1.去掉authentication 下forms元素的path屬性(無效)
2.sessionState屬性配置調整(無效)
3.放入測試Default/Master頁面等
4.deployContext.xml要添加allowedToProxy="true"屬性,但是伺服器仍然有問題。
問題原因:原來是認證過程中cas伺服器端也要請求cas客戶端,類似雙向握手;把認證的地址改為配置的serverName改為外網地址,而不是localhost就可以了,因為如果是localhost,在正式伺服器上的cas伺服器端就找不到cas客戶端了。
問題二:登錄系統時的URL後需要添加“/”才能進入,否則出現迴圈重定向的問題 解決:去掉path屬性解決問題
5.3 C#獲取認證用戶
統一身份認證配置完畢後需要,需要在.NET的C#中獲取登錄用戶名,可以採用如下方式來獲取: string userName = HttpContext.Current.User.Identity.Name;
6 相關說明
6.1 參考鏈接 1
.web.config詳解參考 http://www.cnblogs.com/doublemm/archive/2011/08/25/2153235.html
2.sessionState屬性詳解 http://www.cnblogs.com/xinhaijulan/archive/2010/08/21/1805116.html
6.2 附件說明
附件為配置所需動態鏈接庫文件、完整的web.config樣例文件以及樣例工程用於參考,其中:DotNetCasClient是CAS的的C#工程,ExampleWebSite是樣例工程,對應實際項目。
文檔及附件下載