亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何在不同.net版本實(shí)現(xiàn)單點(diǎn)登錄

 更新時(shí)間:2013年07月23日 09:54:29   作者:  
經(jīng)過(guò)研究,重寫(xiě)實(shí)現(xiàn)了一個(gè)可以在不同.net版本中實(shí)現(xiàn)單點(diǎn)登錄的簡(jiǎn)單方法。現(xiàn)在和大家分享一下,不足之處還望見(jiàn)諒

所謂單點(diǎn)登錄(Single Sign On就是在多個(gè)應(yīng)用系統(tǒng)中,用戶(hù)只需要登錄一次就可以訪問(wèn)所有相互信任的應(yīng)用系統(tǒng)。其實(shí)對(duì)于程序員在技術(shù)上要實(shí)現(xiàn)就得就是多個(gè)不同域名間共享cookie的問(wèn)題。

最近在為ERP添加一個(gè)部署在另一臺(tái)機(jī)器上,鏈接到原有老系統(tǒng)中的子項(xiàng)目,調(diào)用原有老項(xiàng)目中的Login實(shí)現(xiàn)單點(diǎn)登錄,嘗試了N次屢試不成,最后確定問(wèn)題,是,.net2.0與4.0中對(duì)cookie的加密/解密方法由此差異,于是經(jīng)過(guò)研究,重寫(xiě)實(shí)現(xiàn)了一個(gè)可以在不同.net版本中實(shí)現(xiàn)單點(diǎn)登錄的簡(jiǎn)單方法。

1,共用登陸頁(yè)代碼實(shí)現(xiàn):

復(fù)制代碼 代碼如下:

protected void btnLogin_Click(object sender, EventArgs e)
{
  //認(rèn)證開(kāi)票,跳轉(zhuǎn)到原始請(qǐng)求頁(yè)面
   System.Web.Security.FormsAuthentication.RedirectFromLoginPage("ejiyuan", false);
}

2,配置文件:
復(fù)制代碼 代碼如下:

<!--訪問(wèn)權(quán)限控制-->
<authorization>
    <deny users="?"/>
</authorization>   
<!--身份認(rèn)證方式-->
<authentication mode="Forms">
    <forms name=".ASPNET" protection="All" enableCrossAppRedirects="true" loginUrl="Login.aspx" timeout="2880" path="/" domain=".local.com"/>
</authentication>  
<!--驗(yàn)證算法-->
<machineKey validationKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902" decryptionKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC" validation="SHA1" decryption="3DES" /> <compilation debug="true"/>

這里:authentication/forms節(jié)點(diǎn)最重要的兩個(gè)屬性是name和protection. 所有實(shí)現(xiàn)單點(diǎn)登錄的項(xiàng)目都要是相同的配置就這樣,才可以在不同程序中同樣的保護(hù)級(jí)別下讀寫(xiě)Cookie
當(dāng) protection屬性設(shè)置為 "All",通過(guò)Hash值進(jìn)行加密和驗(yàn)證數(shù)據(jù)都存放在Cookie中.默認(rèn)的驗(yàn)證和加密使用的Key都存儲(chǔ)在machine.config文件,我們可以在應(yīng)用程序的Web.Config文件覆蓋這些值.默認(rèn)值如下:

<machineKeyvalidationKey="AutoGenerate,IsolateApps"decryptionKey=" AutoGenerate,IsolateApps"validation="SHA1" />

IsolateApps表示為每個(gè)應(yīng)用程序生成不同的Key.我們不能使用這個(gè).為了能在多個(gè)應(yīng)用程序中使用相同的Key來(lái)加密解密cookie,我們可以移除IsolateApps 選項(xiàng)或者更好的方法是在所有需要實(shí)現(xiàn)SSO的應(yīng)用程序的Web.Config中設(shè)置一個(gè)具體的Key值:

<machineKey validationKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902" decryptionKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC" validation="SHA1" decryption="3DES" /> <compilation debug="true"/>

如果你使用同樣的存儲(chǔ)方式,實(shí)現(xiàn)SSO只是改動(dòng)一下Web.config而已,必須保證單點(diǎn)中的每個(gè)應(yīng)用程序都有相同的配置,如果單點(diǎn)登錄的應(yīng)用程序是跨不同.net版本的,這里的加密/解密不要使用md5

<machineKey decryptionKey="8B6697227CBCA902B1A0925D00FAA00B353F2DF4359D2099" validation="MD5" validationKey="282487E295028E59B8F411ACB689CCD6F39DDD2146055A3EE480424315994760ADF21B580D8587DB675FA02F7916813044E25309CCCDB647174D5B3D0DD9141"/>

3,沒(méi)有登錄頁(yè)的單點(diǎn)登錄不需要代碼 直接配置就可以了,配置如下

復(fù)制代碼 代碼如下:

<authorization>
  <deny users="?"/>
</authorization>
<authentication mode="Forms">
    <forms name=".ASPNET" protection="All" enableCrossAppRedirects="true" loginUrl="http://Sso2.local.com/Login.aspx" timeout="2880" path="/" domain=".local.com"/>
</authentication>

4,登錄模塊從定向代碼封裝在httpModules中供其他系統(tǒng)直接調(diào)用,這里附上封裝代碼與引用方法:
復(fù)制代碼 代碼如下:

public class SsoLoginRedirectModule : IHttpModule
{
    public void Init(HttpApplication i_application)
    {
        // TODO:  Add UploadModule.Init implementation   
        i_application.EndRequest += new EventHandler(i_application_EndRequest);
    }

    void i_application_EndRequest(object sender, EventArgs e)
    {
        if ((HttpContext.Current.Response.StatusCode == 302) && HttpContext.Current.Response.RedirectLocation.Contains(FormsAuthentication.LoginUrl))
        {
            HttpContext.Current.Response.RedirectLocation = FormsAuthentication.LoginUrl + "?ReturnUrl=" + HttpUtility.UrlEncode(HttpContext.Current.Request.Url.OriginalString);
        }
    }

    public void Dispose()
    {
        //throw new NotImplementedException();
    }
}


引用: 
復(fù)制代碼 代碼如下:

<httpModules>
    <add name="SsoModule" type="SsoModule.SsoLoginRedirectModule, SsoModule"/>
</httpModules>

相關(guān)文章

  • .NET 6開(kāi)發(fā)TodoList應(yīng)用之實(shí)現(xiàn)PUT請(qǐng)求

    .NET 6開(kāi)發(fā)TodoList應(yīng)用之實(shí)現(xiàn)PUT請(qǐng)求

    PUT請(qǐng)求本身其實(shí)可說(shuō)的并不多,過(guò)程也和創(chuàng)建基本類(lèi)似。這篇文章主要為大家介紹了.NET6實(shí)現(xiàn)PUT請(qǐng)求的示例詳解,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2021-12-12
  • 更方便快捷的外部操作數(shù)據(jù)庫(kù)的方法(另類(lèi)玩法)

    更方便快捷的外部操作數(shù)據(jù)庫(kù)的方法(另類(lèi)玩法)

    數(shù)據(jù)庫(kù)操作方法很多,各種各樣但是外部操作數(shù)據(jù)庫(kù)的方法就會(huì)顯得格外陌生了,感興趣的朋友可以詳細(xì)了解下本文,或許對(duì)你學(xué)習(xí)ado.net有所幫助
    2013-02-02
  • 打造自己的.NET Core項(xiàng)目模板

    打造自己的.NET Core項(xiàng)目模板

    這篇文章主要介紹了打造自己的.NET Core項(xiàng)目模板,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • asp.net下用服務(wù)器端代碼解決瀏覽器兼容性問(wèn)題

    asp.net下用服務(wù)器端代碼解決瀏覽器兼容性問(wèn)題

    在你不厭其煩的搞瀏覽器兼容性問(wèn)題的時(shí)候不妨試下這個(gè)方法 任何一種網(wǎng)頁(yè)編程語(yǔ)言都能實(shí)現(xiàn),基于獲取用戶(hù)請(qǐng)求信息的判斷瀏覽器類(lèi)型
    2010-01-01
  • asp.net core配置文件加載過(guò)程的深入了解

    asp.net core配置文件加載過(guò)程的深入了解

    這篇文章主要給大家介紹了關(guān)于asp.net core配置文件加載過(guò)程的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • .Net Core中使用ExceptionFilter過(guò)濾器的方法

    .Net Core中使用ExceptionFilter過(guò)濾器的方法

    這篇文章主要介紹了.Net Core中使用ExceptionFilter過(guò)濾器的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • asp.NET 臟字過(guò)濾算法

    asp.NET 臟字過(guò)濾算法

    asp.NET 臟字過(guò)濾算法,需要參考上一篇文章,大家可以比較下。
    2009-10-10
  • ADO.NET防SQL注入與使用參數(shù)增刪改查

    ADO.NET防SQL注入與使用參數(shù)增刪改查

    這篇文章介紹了ADO.NET防SQL注入與使用參數(shù)實(shí)現(xiàn)增刪改查的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • asp.net下PageMethods使用技巧

    asp.net下PageMethods使用技巧

    ASP.net AjAX中的PageMethods可以將靜態(tài)頁(yè)方法添加到 ASP.NET 頁(yè)中并將其用作 Web 方法。然后,無(wú)需創(chuàng)建單獨(dú)的 .asmx 文件即可從該頁(yè)中的腳本調(diào)用這些方法,就好像這些方法是 Web 服務(wù)的一部分。特別是在一些交互流程不復(fù)雜而調(diào)用次數(shù)和方法又比較多的情況下更為方便。因?yàn)镻ageMethods不需要我們?cè)偬砑恿硗獾腤EB服務(wù)或Page來(lái)處理請(qǐng)求。
    2008-03-03
  • System.Web.Routing入門(mén)及進(jìn)階

    System.Web.Routing入門(mén)及進(jìn)階

    System.Web.Routing已經(jīng)作為一個(gè)程序集包含在.net3.5sp1中發(fā)布了。雖然我們并沒(méi)有在3.5sp1中發(fā)現(xiàn)Asp.net Mvc的蹤跡,但是亦以感覺(jué)到它離我們不遠(yuǎn)了
    2011-12-12

最新評(píng)論