程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .NET應用和AEAI CAS集成詳解,.netaeaicas詳解

.NET應用和AEAI CAS集成詳解,.netaeaicas詳解

編輯:關於.NET

.NET應用和AEAI CAS集成詳解,.netaeaicas詳解


概述

數通暢聯某綜合SOA集成項目的統一身份認證工作,需要第三方系統配合進行單點登錄的配置改造,在項目中有需要進行單點登錄配置的.NET應用系統,本文專門記錄.NET應用和AEAI CAS的集成過程步驟,為後續類似的統一認證配置實現提供參考指導。

預期讀者

  • 數通暢聯新員工

  • 廣大技術愛好者

環境信息

操作系統:Windows Server 2008

第三方系統.NET Framework 版本:V4.0

名詞解釋

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.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文件。它可以提供除從父目錄繼承的配置信息以外的配置信息,也可以重寫或修改父目錄中定義的設置。

  • 配置節的每一節

  • 根元素,其它節都是在它的內部.

    此節用於定義應用程序設置項。對一些不確定設置,還可以讓用戶根據自己實際情況自己設置

    例如:

    I. 定義了一個連接字符串常量,並且在實際應用時可以修改連接字符串,不用修改程式代碼.

    <appSettings>

    <add key="SystemCode" value="CM"/>

    II. 定義了一個頁面.

    <appSettings>

    <add key="KeepAlivePage" value="default.aspx?ping=y"/>

    <appSettings>

    <compilation debug="true"  defaultLanguage="c#"  targetFramework="4.0" >

    debug : 為true時,啟動aspx調試;為false不啟動aspx調試,因而可以提高應用程序運行時的性能。一般程序員在開發時設置為true,交給客戶時設置為false.

    default language: 定義後台代碼語言,可以選擇C#和VB.net兩種語言.

    targetFramework是VS2010識別的指令

    <customErrors mode="Off"/>

    mode : 具有On,Off,RemoteOnly 3種狀態。On表示始終顯示自定義的信息; Off表示始終顯示詳細的asp.net錯誤信息;  RemoteOnly表示只對不在本地Web服務器上運行的用戶顯示自定義信息.

    <globalization requestEncoding="UTF-8" responseEncoding="UTF-8" fileEncoding="utf-8" />

    requestEncoding: 它用來檢查每一個發來請求的編碼.

    responseEncoding: 用於檢查發回的響應內容編碼.

    fileEncoding: 用於檢查aspx,asax等文件解析的默認編碼.

    <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="UseCookies" timeout="120" regenerateExpiredSessionId="true"/>

    mode: 分為off,Inproc,StateServer,SqlServer幾種狀態

    stateConnectionString :指定Asp.net應用程序存儲遠程會話狀態的服務器名,默認為本機

    cookieless: 設置為true時,表示不使用cookie會話狀態來標識客戶;否則,相反.

    timeOut: 用來定義會話狀態存儲的時間,超過期限,將自動終止會話.

    regenerateExpiredSessionId: 指定當客戶端指定了過期的會話 ID 時是否重新發出會話 ID。默認情況下,當啟用了 regenerateExpiredSessionId 時,僅為 cookieless 模式重新發出會話 ID。

    <authentication mode="Forms">

    <forms

    loginUrl="http://localhost:8080/cas/login"

    timeout="30"

    defaultUrl="~/Main.aspx"

    cookieless="UseCookies"

    slidingExpiration="true" />

    </authentication>

    Ø Windows: 使用IIS驗證方式

    Ø Forms: 使用基於窗體的驗證方式

    Ø Passport: 采用Passport cookie驗證模式

    Ø None: 不采用任何驗證方式

    <authentication mode="Forms" >

    <forms loginUrl="logon.aspx" name=".FormsAuthCookie"/>

    </authentication>

    其中元素loginUrl表示登陸網頁的名稱,name表示Cookie名稱。

    <authorization>

    <deny users="?"/>

    </authorization>

    注:你可以使用user.identity.name來獲取已經過驗證的當前的用戶名

    為當前應用程序配置會話狀態設置(如設置是否啟用會話狀態,會話狀態保存位置)。

    <sessionState mode="StateServer" cookieless="UseCookies" timeout="120" />

    mode=" StateServer "表示:在本地儲存會話狀態(你也可以選擇儲存在遠程服務器或SAL服務器中或不啟用會話狀態)

    cookieless=" UseCookies " 表示:無論浏覽器或設備是否支持 Cookie,都使用 Cookie 來保留用戶數據。

    timeout="120"表示:會話可以處於空閒狀態的分鐘數

    5.2.2 CAS配置具體步驟

    在web.config中添加CAS的相關配置信息

    <section name="casClientConfig" type="DotNetCasClient.Configuration.CasClientConfiguration, DotNetCasClient"/>

    <casClientConfig

            casServerLoginUrl="http://localhost:8080/cas/login"

            casServerUrlPrefix="http://localhost:8080/cas/"

            serverName="http://YourIP:Port/ExampleWebsite"

            redirectAfterValidation="true"

            gateway="false"

            renew="false"

            singleSignOut="true"

            ticketTimeTolerance="5000"

            ticketValidatorName="Cas20"

            proxyTicketManager="CacheProxyTicketManager"

            serviceTicketManager="CacheServiceTicketManager"

            gatewayStatusCookieName="CasGatewayStatus" />

    黃色為CAS認證服務地址

    綠色為第三方系統登錄地址

    <authentication mode="Forms">

    <forms

    loginUrl="http://localhost:8080/cas/login"

    timeout="30"

    defaultUrl="~/Main.aspx"

    cookieless="UseCookies"

    slidingExpiration="true"

     />

        </authentication>

    <authorization>

    <deny users="?" />

    </authorization>

    注:authorization和authentication需要一起使用才有效果

    <remove name="DotNetCasClient"/>

      <add name="DotNetCasClient" type="DotNetCasClient.CasAuthenticationModule,DotNetCasClient"/>

    <add name="DotNetCasClient" type="DotNetCasClient.CasAuthenticationModule,DotNetCasClient"/>

    5.2.3 相關問題及解決辦法

    • 問題一:配置後,經過單點登錄的攔截遇到循環重定向問題

      解決:

    • 問題二:登錄系統時的URL後需要添加“/”才能進入,否則出現循環重定向的問題

    解決:去掉path屬性解決問題

    <authentication mode="Forms">

    <forms

    loginUrl="http://localhost:8080/cas/login"

    timeout="30"

    defaultUrl="~/Main.aspx"

    cookieless="UseCookies"

    slidingExpiration="true"

    path=”/XXXX/”

     />

        </authentication>

    5.3 C#獲取認證用戶

    統一身份認證配置完畢後需要,需要在.NET的C#中獲取登錄用戶名,可以采用如下方式來獲取:

    string userName = HttpContext.Current.User.Identity.Name;

    相關說明

    6.1 參考鏈接

    http://www.cnblogs.com/doublemm/archive/2011/08/25/2153235.html

    http://www.cnblogs.com/xinhaijulan/archive/2010/08/21/1805116.html

    6.2 附件說明

    附件為配置所需動態鏈接庫文件、完整的web.config樣例文件以及樣例工程用於參考,其中:DotNetCasClient是CAS的的C#工程,ExampleWebSite是樣例工程,對應實際項目。

    文檔及附件下載https://pan.baidu.com/s/1dFGDkzv

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved