色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

ASP.NET實現單點登陸(SSO)適用于多種情況

第一種:同主域但不同子域之間實現單點登陸

Form驗證其實是基于身份cookie的驗證??蛻舻顷懞螅梢粋€包含用戶身份信息(包含一個ticket)的cookie,這個cookie的名字就是在web.config里Authentication節form設定的name信息,如

復制代碼 代碼如下:
<authentication mode="Forms">
<forms loginUrl="login.ASPx" name=".ASPXAUTH" path="/" protection="All" domain=".zuowenjun.cn"></forms>
</authentication>

這里,.ASPNETAUTH就是這個Cookie的名字。通過在Request.Cookies集合里包含這個cookie,實現用戶身份信息的傳遞。所以,共享身份驗證信息的思路很簡單:只要這個身份驗證cookie能在自域名中共享,Form驗證信息自然可以共享!

代碼實現:

string userData = JsonHelper.ScriptSerialize(user);FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, user.userid.ToString(), DateTime.Now, DateTime.Now.AddHours(4), false, userData);HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));//加密身份信息,保存至Cookiecookie.Domain = ".zuowenjun.cn";Response.Cookies.Add(cookie); 

第二種:虛擬目錄的主應用和子應用之間實現SSO

復制代碼 代碼如下:
<authentication mode="Forms">
<forms name=".SSOAuth" protection="All" timeout="60" loginUrl="login.ASPx" />
</authentication>

比較重要的兩個屬性是 name 和protection. 當 protection屬性設置為 "All",通過Hash值進行加密和驗證數據都存放在Cookie中.默認的驗證和加密使用的Key都存儲在machine.config文件,我們可以在應用程序的Web.Config文件覆蓋這些值.默認值如下:
復制代碼 代碼如下:
<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey=" AutoGenerate,IsolateApps" validation="SHA1" />

IsolateApps表示為每個應用程序生成不同的Key.我們不能使用這個.為了能在多個應用程序中使用相同的Key來加密解密cookie,我們可以移除IsolateApps 選項或者更好的方法是在所有需要實現SSO的應用程序的Web.Config中設置一個具體的Key值:
復制代碼 代碼如下:
<machineKey validationKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902" decryptionKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC" validation="SHA1" />

第三種:不同域名下的應用程序實現SSO(也適上以上情況)

主要是采用頁面URL傳參并重定向來實現,這類實現的方法有很多,但可能需要注意的是安全性問題。

AspNet技術ASP.NET實現單點登陸(SSO)適用于多種情況,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 富裕县| 绥化市| 永嘉县| 绿春县| 临高县| 奉化市| 邯郸县| 镇宁| 盐池县| 扎赉特旗| 乌什县| 太康县| 蓬安县| 堆龙德庆县| 禄丰县| 汝城县| 鄢陵县| 松桃| 江孜县| 华阴市| 普格县| 浏阳市| 尚志市| 儋州市| 堆龙德庆县| 扶绥县| 比如县| 永嘉县| 全椒县| 弥勒县| 凌云县| 永年县| 舒兰市| 太原市| 手游| 富宁县| 寿宁县| 会理县| 鄂伦春自治旗| 西乡县| 射阳县|