婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 如何在不同.net版本實現單點登錄

如何在不同.net版本實現單點登錄

熱門標簽:鄭州400電話辦理 聯通 地圖標注和認領 智能電話營銷外呼系統 電銷語音自動機器人 五常地圖標注 凱立德導航官網地圖標注 長春呼叫中心外呼系統哪家好 萊蕪外呼電銷機器人價格 戶外地圖標注軟件手機哪個好用

所謂單點登錄(Single Sign On就是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。其實對于程序員在技術上要實現就得就是多個不同域名間共享cookie的問題。

最近在為ERP添加一個部署在另一臺機器上,鏈接到原有老系統中的子項目,調用原有老項目中的Login實現單點登錄,嘗試了N次屢試不成,最后確定問題,是,.net2.0與4.0中對cookie的加密/解密方法由此差異,于是經過研究,重寫實現了一個可以在不同.net版本中實現單點登錄的簡單方法。

1,共用登陸頁代碼實現:

復制代碼 代碼如下:

protected void btnLogin_Click(object sender, EventArgs e)
{
  //認證開票,跳轉到原始請求頁面
   System.Web.Security.FormsAuthentication.RedirectFromLoginPage("ejiyuan", false);
}

2,配置文件:
復制代碼 代碼如下:

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

這里:authentication/forms節點最重要的兩個屬性是name和protection. 所有實現單點登錄的項目都要是相同的配置就這樣,才可以在不同程序中同樣的保護級別下讀寫Cookie
當 protection屬性設置為 "All",通過Hash值進行加密和驗證數據都存放在Cookie中.默認的驗證和加密使用的Key都存儲在machine.config文件,我們可以在應用程序的Web.Config文件覆蓋這些值.默認值如下:

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

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

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

如果你使用同樣的存儲方式,實現SSO只是改動一下Web.config而已,必須保證單點中的每個應用程序都有相同的配置,如果單點登錄的應用程序是跨不同.net版本的,這里的加密/解密不要使用md5

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

3,沒有登錄頁的單點登錄不需要代碼 直接配置就可以了,配置如下

復制代碼 代碼如下:

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中供其他系統直接調用,這里附上封裝代碼與引用方法:
復制代碼 代碼如下:

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();
    }
}


引用: 
復制代碼 代碼如下:

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

您可能感興趣的文章:
  • asp.net簡單實現單點登錄(SSO)的方法
  • .NET 單點登錄解決方案
  • 基于.Net的單點登錄(SSO)實現解決方案
  • 一個簡單的asp.net 單點登錄實現
  • 在ASP.NET 中實現單點登錄
  • .net core 1.0 實現單點登錄負載多服務器

標簽:福州 湖州 宣城 衢州 紅河 西藏 岳陽 西寧

巨人網絡通訊聲明:本文標題《如何在不同.net版本實現單點登錄》,本文關鍵詞  如,何在,不同,.net,版本,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《如何在不同.net版本實現單點登錄》相關的同類信息!
  • 本頁收集關于如何在不同.net版本實現單點登錄的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 合川市| 城口县| 元谋县| 交城县| 镇雄县| 江都市| 道真| 那曲县| 姚安县| 天峨县| 冷水江市| 崇州市| 西青区| 蕉岭县| 巍山| 苏尼特左旗| 临武县| 将乐县| 新建县| 巨野县| 宜州市| 隆昌县| 大埔区| 银川市| 南雄市| 盘山县| 双城市| 阿巴嘎旗| 阿图什市| 林芝县| 法库县| 锡林浩特市| 宁都县| 中阳县| 涞水县| 措美县| 石泉县| 龙胜| 嘉鱼县| 阳新县| 讷河市|