国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

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

2024-07-10 12:45:10
字體:
供稿:網(wǎng)友

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

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

1,共用登陸頁代碼實(shí)現(xiàn):
代碼如下:
protected void btnLogin_Click(object sender, EventArgs e)
{
  //認(rèn)證開票,跳轉(zhuǎn)到原始請求頁面
   System.Web.Security.FormsAuthentication.RedirectFromLoginPage("ejiyuan", false);
}

2,配置文件:
代碼如下:
<!--訪問權(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ù)級別下讀寫Cookie
當(dāng) protection屬性設(shè)置為 "All",通過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來加密解密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"/>

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 泰兴市| 牙克石市| 富锦市| 婺源县| 屏南县| 绍兴县| 青浦区| 恩施市| 永城市| 奉新县| 铁岭市| 平谷区| 锡林浩特市| 老河口市| 高州市| 三门峡市| 集安市| 兴化市| 北海市| 灯塔市| 长泰县| 龙里县| 宣化县| 定远县| 襄城县| 双峰县| 乃东县| 武山县| 三台县| 九龙坡区| 陇南市| 衡东县| 赤水市| 博兴县| 张家港市| 澄迈县| 溧阳市| 驻马店市| 安乡县| 奉化市| 望城县|