激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - ASP.NET教程 - 如何在不同.net版本實(shí)現(xiàn)單點(diǎn)登錄

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

2019-11-13 11:32asp.net教程網(wǎng) ASP.NET教程

經(jīng)過(guò)研究,重寫(xiě)實(shí)現(xiàn)了一個(gè)可以在不同.net版本中實(shí)現(xiàn)單點(diǎn)登錄的簡(jiǎn)單方法?,F(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>
 

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 国产毛片视频 | 49vvv| 激情综合网俺也去 | 午夜国产福利 | 一级电影免费 | 91网址在线观看 | 国产午夜电影在线观看 | 欧美激情999| 日韩黄色片免费看 | 99热高清| 欧美激情精品久久久久 | 日本在线一区二区 | 孕妇体内谢精满日本电影 | 久久中文字幕在线观看 | 成人一级免费视频 | 久久精品国产亚洲7777 | 少妇的肉体k8经典 | 国产免费久久久久 | 久久久久久久久浪潮精品 | 亚洲影视中文字幕 | 91精品久久久久久久久久久 | 欧美一级黄色影院 | 蜜桃av网| 911视频免费版 | 香蕉秀| 毛片一级网站 | 精品一区在线视频 | 免费a观看 | 久久亚洲线观看视频 | 国产精品成人久久 | 97久久精品一区二区三区观看 | 99精品视频免费看 | 爱逼av | www.guochan| 国内精品久久久久影院不卡 | 国产在线精品一区二区三区不卡 | 91福利影视 | 麻豆视频网 | 免费专区 - 91爱爱 | 日韩黄色精品视频 | 欧美精品久久天天躁 |