2012-08-13 52 views
1

通過閱讀SAP社區網絡上的舊blog post,我發現了一些用於解析MYSAPSSO2登錄令牌的用戶名和系統ID的說明。解析MYSAPSSO2使用.NET登錄令牌

我很好奇,如果有人已經無意中發現了.NET庫來獲取這些信息,而無需編寫我自己的。

回答

1

注意:根據票證字符串的格式,此方法會失敗一些時間。

void SetUserNameFromTicket1(string Ticket) { this.UserName = string.Empty;

 try 
     { 
      // Decoded Ticket "1100 \0portal:USERNAME1(char65533)\0basicauthentication\0\nUSERNAME2\0000\..." 

      string TicketData = this.base64Decode(ticket); 
      MessageBox.Show(strTicketData); 
     } 
     catch (Exception ex) 
     { 
      mobjLog.Debug("Exception in GetUserNameFromTicket: " + ex.Message); 
     } 
    } 

    private string base64Decode(string data) 
    { 
     string result = string.Empty; 
     try 
     { 
      data = System.Web.HttpUtility.UrlDecode(data); 
      System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding(); 
      System.Text.Decoder utf8Decode = encoder.GetDecoder(); 

      // if base64 were to be embedded in a URL, the use of the forward slash would be interpreted as a URL divider rather than 
      // part of the base64. As a result, other characters such as dash (-), underscore (_), period 
      // (.), colon (:) and exclamation point (!) are used in some implementations. 
      // http://www.sans.org/reading_room/whitepapers/auditing/base64-pwned_33759 
      // base64-pwned_33759.pdf 
      data = data.Replace('-', '/'); 
      data = data.Replace('_', '/'); 
      data = data.Replace('.', '/'); 
      data = data.Replace(':', '/'); 
      data = data.Replace('!', '/'); 

      byte[] todecode_byte = Convert.FromBase64String(data); 
      int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length); 
      char[] decoded_char = new char[charCount]; 
      utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0); 
      result = new String(decoded_char); 
     } 
     catch (Exception ex) 
     { 
      mobjLog.Debug("Error in base64Decode" + ex.Message); 
     } 

     return result; 
    } 
1

您應該考慮使用SAP SSO EXT Lib(SAPSSOEXT - (SAP note 1040335))解析登錄憑單詳細信息。它是SAP解析SAP/Portal登錄憑單的官方和標準庫。它可以用於C,Java和.NET應用程序。

更多信息
SAP SSO Authentication with verify.pse using SAPSSOEXT

+0

我們已經調查了這一點,但SAPSSOEXT需要創建在同一臺機器上裝載令牌的證書,而且我們不想去追求這條道路。 – 2013-02-25 23:02:37