亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:15:44
字體:
來源:轉載
供稿:網友

所謂單點登錄(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 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 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 type="SsoModule.SsoLoginRedirectModule, SsoModule"/>
</httpModules>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情一区二区三区在线视频观看| 国产亚洲精品久久久久久777| 亚洲免费视频一区二区| 中文字幕亚洲自拍| 岛国av一区二区| 久久人人爽人人爽人人片av高请| 欧美电影在线免费观看网站| 日韩精品一区二区三区第95| 日韩精品视频三区| 欧美精品videofree1080p| 日韩欧美国产视频| 久99久在线视频| 久久中文久久字幕| 国产综合久久久久久| 亚洲欧美激情另类校园| 97久久精品国产| 亚洲国产精品电影| 欧美成人全部免费| 日韩免费看的电影电视剧大全| 欧美电影免费观看网站| 日韩av在线播放资源| 久久99久久99精品中文字幕| 色妞一区二区三区| 亚洲第一福利视频| 日韩视频在线观看免费| 国产精品久久久久av| 日韩人在线观看| 日韩中文在线视频| 97在线视频免费看| 国产xxx69麻豆国语对白| 日韩欧美在线观看| 欧亚精品在线观看| 国产精品综合不卡av| 亚洲最大的免费| 久久久久久久久91| 欧美洲成人男女午夜视频| 亚洲黄在线观看| xxxxx成人.com| 成人a视频在线观看| 国产日韩精品入口| 国产精品久久久久久亚洲调教| 国产日韩欧美日韩大片| 亚洲成avwww人| 日韩高清电影免费观看完整版| 欧美日韩中文字幕综合视频| 欧洲成人免费视频| 欧美最近摘花xxxx摘花| 欧美亚洲日本网站| 成人欧美一区二区三区黑人| 欧美激情一级精品国产| 97精品国产97久久久久久春色| 中文字幕在线看视频国产欧美在线看完整| 精品国产老师黑色丝袜高跟鞋| 亚洲天堂免费在线| 久久久久国产精品免费| 国产精品欧美亚洲777777| 亚洲国产成人精品久久| 亚洲一二在线观看| 欧美中文字幕在线视频| 欧洲s码亚洲m码精品一区| 亚洲国产精品成人精品| 亚洲免费中文字幕| 精品无人国产偷自产在线| 亚洲精品aⅴ中文字幕乱码| 激情久久av一区av二区av三区| 日韩一区二区精品视频| 日韩高清av在线| 国产精品久久久久不卡| 国产国产精品人在线视| 91最新国产视频| 91亚洲精品久久久| 亚洲一区二区久久久久久久| 国产香蕉精品视频一区二区三区| 精品电影在线观看| 91精品久久久久久| 欧美日韩xxx| 2019亚洲日韩新视频| 亚洲电影成人av99爱色| 正在播放国产一区| 国产欧美精品一区二区| 国产精品视频最多的网站| 久久777国产线看观看精品| 国产高清视频一区三区| 91美女福利视频高清| 亚洲欧洲国产一区| 久久福利网址导航| 久久久欧美一区二区| 国产成人精品国内自产拍免费看| 亚洲国产天堂久久综合网| 国产一区视频在线播放| 亚洲最大福利网站| 欧美夫妻性视频| 亚洲欧美国产日韩中文字幕| 91在线网站视频| 国产成人黄色av| 国产日韩在线精品av| 国产小视频91| 亚洲精品影视在线观看| 亚洲va欧美va国产综合剧情| 日韩中文在线视频| 69视频在线免费观看| 久久资源免费视频| 欧美电影免费在线观看| 亚洲精品视频免费| 在线国产精品视频| 亚洲国产精品美女| 成人观看高清在线观看免费| 国产精品夜间视频香蕉| 日韩欧美国产一区二区| 国产视频福利一区| 日韩视频中文字幕| 亚洲最大在线视频| 欧美日韩国产色视频| 日韩电影在线观看永久视频免费网站| 中文字幕在线成人| 激情成人在线视频| 69**夜色精品国产69乱| 亚洲影视九九影院在线观看| 国产精品无码专区在线观看| 亚洲成人性视频| 一区二区三区视频观看| 久久久久国产精品一区| 亚洲xxx大片| 欧美xxxx做受欧美.88| 亚洲女人天堂视频| 亚洲欧洲黄色网| 欧美亚洲在线视频| 亚洲欧美日韩第一区| 亚洲电影免费观看高清完整版在线观看| 欧美精品久久久久久久久久| 久久久91精品国产| 午夜精品视频网站| 91成人在线视频| 亚洲天堂av电影| 91爱视频在线| 亚洲精品视频中文字幕| 亚洲欧美激情在线视频| 日韩精品在线免费观看视频| 成人免费大片黄在线播放| 在线播放日韩av| 亚洲娇小xxxx欧美娇小| 久久久久久国产免费| 国产视频精品在线| 精品国产鲁一鲁一区二区张丽| 欧美成人性生活| 91在线视频九色| 久久久久国产精品免费网站| 国产精品欧美一区二区三区奶水| 亚洲一区二区三区视频播放| 久久成人在线视频| 久久综合亚洲社区| 欧美极品在线播放| 精品久久国产精品| 懂色aⅴ精品一区二区三区蜜月| 亚洲第一精品夜夜躁人人躁| 日本精品免费一区二区三区| 91精品国产自产91精品| 中文字幕亚洲综合久久筱田步美| 亚洲人成网站在线播| 精品视频在线播放| 国内精品伊人久久| 成人福利视频在线观看| 亚洲欧美激情视频| 久久成人免费视频|