中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用.net怎么實現一個單點登錄功能

發布時間:2020-12-21 16:59:05 來源:億速云 閱讀:258 作者:Leah 欄目:開發技術

利用.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>

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ne
AI

华亭县| 重庆市| 临高县| 遵化市| 正蓝旗| 安泽县| 丰城市| 上栗县| 太和县| 仲巴县| 大余县| 防城港市| 墨玉县| 扬中市| 宝兴县| 海伦市| 全州县| 玉环县| 大冶市| 木里| 子长县| 玉山县| 泸定县| 梓潼县| 九江市| 长宁县| 漳平市| 新余市| 包头市| 尤溪县| 鄂伦春自治旗| 临清市| 若尔盖县| 英山县| 福州市| 福鼎市| 罗江县| 安义县| 九龙城区| 河池市| 托里县|