日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET站点跨子域名单点登陆(SSO)的实现

發布時間:2023/12/10 asp.net 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET站点跨子域名单点登陆(SSO)的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

http://blog.csdn.net/jason_dct/article/details/8502075

?

ASP.NET站點跨子域名單點登陸(SSO)的實現

在MSDN的文檔“配置跨應用程序的 Forms 身份驗證(http://msdn2.microsoft.com/zh-CN/library/eb0zx8fc.aspx)”?中,提出了在Web Farm和多個應用程序之間實現共享身份登陸信息的方法。這個方法實現的其實是場環境下的身份共享,對于跨子域名的單點登陸,如網易和CSDN的通行證的實現,也有很多朋友給出了解決方案,參見:http://www.cnblogs.com/dudu/archive/2005/07/04/186279.html

Form驗證其實是基于身份cookie的驗證。客戶登陸后,生成一個包含用戶身份信息(包含一個ticket)的cookie,這個cookie的名字就是在web.config里Authentication節form設定的name信息,如

<authentication mode="Forms">
???<forms loginUrl="login.aspx" name=".ASPXAUTH" path="/" protection="All" ></forms>
?</authentication>

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

共享Cookie的文章網上很多,基本的做法就是設定Cookie的domain屬性。cookie的domain指定了此cookie所關聯的域。domain默認為String.Empty,表示關聯的域是當前Request對應的域。如果domain設定一個子域名,如cookie.Domain="brookes.com",則表示此cookie關聯brookes.com下所有的下級域。因此,可以被www.brookes.com/web2.brookes.com......等共享。

至此,實現跨子域名的Form驗證信息共享的方法就很簡單:

?if?(Membership.ValidateUser(userName,?password))
??????????
...{
????????????????FormsAuthentication.SetAuthCookie(userName.Text,?
false);
????????????????HttpCookie?cookie?
=?Response.Cookies[FormsAuthentication.FormsCookieName];
????????????????cookie.Domain?
=?".brookes.com";
????????????????Response.Cookies.Add(cookie);
????????????????FormsAuthentication.RedirectFromLoginPage(userName,
false);
????????????}

這個代碼說明的是實現的原理。這里,實現的自己寫Form驗證的過程。如果使用的是Login控件,由framework自己完成驗證,怎么設定這個cookie的domain呢?

可以有三種方式:

1. 在Login.OnLoggedIn事件中處理。這個事件在用戶通過身份驗證后觸發,驗證cookie已經存在,可以修改其domain屬性,代碼參考上面;
2. 將驗證用戶、設定AuthCookie的過程寫成一個HttpMoudle。這個方法稍負責,可google代碼
3.有一個最最最簡單的方法,在.net 2.0 中,Authticainon的forms元素新添了一個屬性:domain。這個屬性對應的就是form的AuthCookie的domain屬性。因此,只需要在每個子域的web.config中作如下設置:

<authentication mode="Forms">
???<forms loginUrl="login.aspx" name=".ASPXAUTH" path="/" protection="All" domain="brookes.com"></forms>
?</authentication>

OK,現在你不需要作任何其他設置了,你的brookes.com下所有的子域都可以共享form驗證身份信息了!

還要說明幾點:
1. 這個domain屬性會覆蓋在httpCookie配置節的domain屬性設置,但是只會影響到AuthCookie,其他cookie不受影響;
2. 看了上面這一條,當然會想到我可以設定httpCookies配置節,如:
?? <httpCookies domain="brookes.com"/>
? 效果是一樣的。不同指出在于,httpCookies指定了站點內所有cookie的domain屬性,這將導致站點內所有的cookie都可以在子域間共享!至于這種共享是需要還是該避免,根據需要具體判斷。
3. 這個domain屬性,我看到在有的文檔里強調在前面加一個點,如domain=".brookes.com",而MS的文檔里都沒有這個點。根據我的測試結果,兩個寫法沒有區別,效果一樣。

?

-----------------------------------------------------------------------------------------------------------------------------------------

1 對于純web得sso,如果有獨立得SSO登陸服務器,所有的驗證都跳轉到這個服務器的界面,登陸的狀態保留在sso server上

2 如果要桌面和web共同認證,還是必須有獨立得SSO,

對于自己實現的方案,例如如果是通過一個桌面程序來實現SSO,那么必須有一臺SSO服務器,桌面程序通過httpclient驗證身份,然后可以通過
a. 修改本機cookies讓IE傳認證令牌
b. 直接把認證令牌作為url字符串根在桌面程序的一個鏈接后面

令牌說法比較含糊,具體兩種方法:
1 所有得url均復寫令牌
2 只要保留瀏覽器對SSO web server的cookies,跳轉應用程序的時候,web app先redirect到ssoserver,驗證cookies后,跳回來,對用戶來說,感覺不到去過ssoserver,呵呵,

很多網站,例如google好像就是這個方法


jaas本質上只解決一個登錄可配置的問題,像tomcat用jaas,只能解決同時登陸tomcat上得N個應用,而且僅限于java,對SSO實現還是要按上面的方法。kerberos往往是和系統一

些模塊緊密結合的,擴展不一定方便。


3 如果windows是唯一登錄入口,也就是沒有第二臺SSO登錄服務器。
那么實現SSO的核心,就是登錄域之后,IE能夠把域信息發送給服務端:

? 配置IE瀏覽器
? ①internet選項-->安全-->本地intranet-->站點-->高級
? 添加wls
? ②internet選項-->高級-->安全
? 確定,集成windows身份認證被選中

服務段的weblogic接收到這個令牌以后,要去AD上驗證

集成Windows身份驗證(以前稱為NTLM身份驗證和Windows NT質詢/響應身份驗證)可以使用NTLM或Kerbetas身份驗證,NTLM是Microsoft的一項專有技術,自問世以來已幾經更新,

雖然這種機制穩定可靠但它有一個致命缺點是不能進行委派,這就意味著用戶憑據不能流動到遠程服務(如SQL Server)。而Kerberos卻不存在這種問題,在保持穩定安全的驗證機

制的同時還可以在Windows環境中輕松地使用委派,我們要討論的就是這種機制。

Kerberos大多數情況下要求使用Microsoft Active Directory,因為Active Directory 充當Kerberos令牌授予服務(TGS/TGT)。

如果用kerberos,那就很簡單了,windows和weblogic都支持kerberos,認證數據都在AD上
參考資料? http://edocs.bea.com.cn/wls/docs92/secmanage/sso.html

?

from:http://www.cnblogs.com/csdnexpert/archive/2007/12/17/999415.html

?

?

-------------------------------------------------------------------------------------------------------------------------------------------

Java SSO參考:http://www.cnblogs.com/hannover/archive/2009/10/15/1583692.html

轉載于:https://www.cnblogs.com/8090sns/archive/2013/01/22/2871322.html

總結

以上是生活随笔為你收集整理的ASP.NET站点跨子域名单点登陆(SSO)的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。