ASP.NET中的單點登入

來源:互聯網
上載者:User

對於大多數的web應用程式,很多人喜歡採用表單驗證的方法。當許多應用程式運行在一個主域下面的多個子域時,使用單點登入將是很不錯的一個選擇,當使用者在http://www.exapmle.com/登入之後,可以訪問everything.example.com的資源。

    表單驗證預設不支援這種特性,但是,通過合適的方法調整它並不複雜。

    ASP.NET表單驗證的技術內幕並不複雜:它建立了一個特殊的Cookie,這個cookie的名字由web.config中的forms元素的name定義,它包含加密的驗證資料,該cookie預設的名字是.ASPXAUTH。

    出於保護使用者隱私和安全的原因,cookie預設和主機名稱關聯。但是cookie的機制支援一台主機的cookie在該主機所在的域內被接受,意味著主機server1.example.com的cookie可以在整個example.com中使用。

    可以設定二級域和第三層網域的cookie,但是不允許設定頂級域的cookie,例如設定.com的cookie就是不允許的。

    下面開始進行設定,看需要進行什麼工作。

開始設定

    和其它的應用程式一樣,必須先在system.web中設定authentication,例如:

<authentication mode="Forms">

<forms name="DomainLoginAuth" loginUrl=" http://WebLogin/Default.aspx" protection="All"/>

</authentication>

    正如前邊提到的,驗證的cookie是加密的,而加密的種子是隨機產生的。當需要多個伺服器協同工作時,那麼將需要相同的加密種子。在system.web中加入如下的一段:

<MACHINEKEY

  validationKey="BD52058A3DEA473EA99F29418689528A494DF2B00054BB7C"

  decryptionKey="684FC9301F404DE1B9565E7D952005579E823307BED44885"

/>

    如果採用DES加密的話,使用16個16進位符號,如果使用SHA1加密的話,使用48個16進位符號,ASP.NET預設採用的SHA1加密。

開始登入驗證

    必須在將驗證cookie發送給客戶之前,為cookie附加域資訊,代碼如下(假定使用者名稱和密碼已經經過驗證並且使用的使用者名稱儲存在userName變數中):

HttpCookie authCookie = FormsAuthentication.GetAuthCookie(userName, false);

authCookie.Domain = "example.com";

Response.Cookies.Add(authCookie);

Response.Redirect(FormsAuthentication.GetRedirectUrl(userName, false);

登出

    通常,使用者登出時不需要進行什麼設定,只要調用FormsAuthentication.SignOut()即可,但是這個函數不能處理域的cookie。

    因此,應該手工刪除這個cookie,手工刪除這個cookie的唯一方法是將cookie的到期時間設定為過去的時間,參考如下的代碼:

HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];

authCookie.Domain = "example.com";

authCookie.Expires = DateTime.Now.AddDays(-1);

Response.Cookies.Add(authCookie);

 

    好了,現在你的應用程式可以進行單點登入了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.