2010-05-27 37 views
2

我想獲取用戶令牌並構建URL,以便用戶每次點擊文件時都不需要登錄。下面是我的代碼。 我的問題是我需要傳遞下面顯示的整個令牌值還是? 我得到令牌值FileNet P8工作場所令牌問題

symmetric:algorithm:QUVT:keyid:NTZkYTNkNmI=:data:7P9aJHzkfGTOlwtotuWGaMqfU9COECscA9yxMdK64ZLa298A3tsGlHKHDFp0cH+gn/SiMrwKfbWNZybPXaltgo5e4H4Ak8KUiCRKWfS68qhmjfw69qPv9ib96vL3TzNORYFpp/hrwvp8aX4CQIZlBA== 

的問題是,一旦我複製網址和過去它在瀏覽器中,它正在我到登錄頁面。儘管我沒有收到任何錯誤,但應該將用戶直接帶到圖像查看器,但是如果我登錄頁面,它會將我帶到登錄頁面,正確地打開文件。

我在做什麼錯?

string text = ""; 
      string userName = "userName"; 
      string pwd = "*****"; 
      fileNetID = "{5FCE7E04-3D74-4A93-AA53-26C12A2FD4FC}"; 
      Uri uri = null; 
      string workplaceURL = "http://filenet:9081/WorkPlaceXT"; 
      uri = new Uri(workplaceURL + "/setCredentials?op=getUserToken&userId=" + this.encodeLabel(userName) + "&password=" + this.encodeLabel(pwd) + "&verify=true"); 
      System.Net.WebRequest webRequest = System.Net.WebRequest.Create(uri); 
      System.Net.WebResponse webResponse = webRequest.GetResponse(); 
      StreamReader streamReader = new StreamReader(webResponse.GetResponseStream()); 
      String token = streamReader.ReadToEnd(); 
      string contentURL = string.Empty; 
      contentURL = workplaceURL + "/getContent?objectType=document&impersonate=true&objectStoreName=OBJECTSTORE&id=" + HttpUtility.UrlEncode(fileNetID); 
      contentURL += "&ut=" + HttpUtility.UrlEncode(encodeLabel(token)); 
      return contentURL; 
+0

很肯定LTPA令牌被存儲在你的HTTP會話的cookie。如果未找到該cookie,則會重定向到登錄頁面。該令牌僅適用於單個HTTP會話,並且具有超時。 – 2011-11-10 19:17:08

回答

0

這裏是我的功能,你可以看到最後幾行我是如何展開的令牌底:

public static string getCEUserToken(string baseURL, string uid, string pwd) 
{ 
    string UserToken = ""; 
    System.Net.WebRequest request = System.Net.WebRequest.Create(baseURL +  "/setCredentials?op=getUserToken&userId=" + uid + "&password=" + pwd + 
    "&verify=true"); 
    request.Method = "POST"; 
    System.Net.WebResponse response = request.GetResponse(); 
    Stream stream = response.GetResponseStream(); 
    byte[] token = new byte[response.ContentLength]; 
    stream.Read(token, 0, (int)response.ContentLength); 
    response.Close(); 

    foreach (byte chr in token) 
     UserToken += System.Convert.ToChar(chr); 

    return System.Web.HttpUtility.UrlEncode(UserToken); 
}