2013-11-25 58 views
0

我正在開發一個企業應用程序,我需要在REST請求中傳遞會話ID,這會在我的EJB方法中傳遞相同的ID。在REST調用中傳遞參數

我採取的方法是:

  1. 創建一個會話ID,只要用戶登錄。使用此會話ID作爲標題參數在每個API中傳遞,除了登錄。 (我仍在弄清楚如何排除一個REST API)
  2. 在標題中使用此會話標識並將其傳遞給每個EJB。 (在攔截器被調用後,如何在隨後的Rest調用中讀取頭部參數。)

任何人都可以讓我知道,如果這是正確的路要走?

另外,將生成一個單向哈希來創建一個有用的會話標記,而不是發送一個自動生成的主鍵?

+2

爲什麼不使用'jsessionid'? – 2013-11-26 10:20:23

回答

0

將標記作爲標頭參數傳遞以標識登錄用戶是常用方法。實際上使用OAuth基本上是一樣的想法,但增加了一個標準的方法,並添加了到期/撤銷令牌的可能性。

關於生成單向散列,是的。這是要走的路。一個自動生成的主鍵將是一個可怕的想法。如果我登錄並且分配了會話1427,我幾乎可以100%確定現在有一個1426會話可供不同用戶使用。巨大的安全漏洞。

確保您儘可能難以猜出這些標記,並在整個過程中使用https,否則您會將您的登錄標記暴露給竊聽者。

0

是的。不要使用自動生成的主鍵。如果您使用多層應用程序並且不想使用JSESSIONID,請使用SecureRandom生成會話令牌並使用它。