搜索的用戶組別: 遊客[0級]
搜索選項 要有附件 作者搜索
搜索範圍
Dedo 論壇搜索系統
DC論壇影城 ad.vbox
香港易存網庫 [服務器租用|easyhost.com.hk] 域名 電郵 VPN 網頁寄存 快速穩定 雲端 Hosting Server 電話:(852)-21550486 / (86)-21-61979257 服務:[ 資訊, 電郵服務, 資訊網絡, 網頁儲存, 網頁設計, 網站設計, 網頁寄存, 網站寄存, 主機租用, 主機托管, 伺服器管理, 伺服器租用, 伺服器托管, 服務器租用, 服務器托管, 香港服務器托管, 香港服務器租用, 域名註冊, 網站地圖, 客戶優惠, 報章報導, web hosting, hosting, email service, web page design, web design, dedicated server, dedicated host, server management, server colocation, colocation, Virtual Host, MPLS, CDN, IPLC ]
返回列表 發帖

[原創] ASP.NET 出現 FormsAuthentication Fail .... Supplied Ticket is invalid狀況

今天和各位分享一個我之前遇到的實務狀況,
為了在同一台機器上實現Single Sign-in (從ASP.NET 1.1 登入, 自動轉入 ASP.NET 4.0的App)
結果IIS一直提示 "forms authentication failed for the request. reason the ticket supplied was invalid"

後來研究相當多文獻後發現原因其實很簡單,
就是兩個ASP.NET網站的web.config必須有相同的 Machine Key.
這樣子從ASP.NET 1.1 導向到 ASP.NET 2.0 (and later) 之後的流程都很順.

不過要特別注意, Validation與Decryption的解密演算法必須都是3-DES.
附上我產生Key的程式碼參考.

      public static string genRandomKey(int bytelength){
         byte[] buffer = new byte[bytelength];
         RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
         rng.GetBytes(buffer);
         StringBuilder sb = new StringBuilder(bytelength * 2);
         for (int i = 0; i < buffer.Length; i++)
            sb.Append(string.Format("{0:X2}", buffer[i]));
         return sb.ToString();
      }

      public static string getASPNET20machinekey()
      {
          string ValidationKey = genRandomKey(64);   //剛好是128個16進位字元(for 3DES)
              string DecryptionKey = genRandomKey(24);  // 48個字元
      }

返回列表