2013-11-25 56 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生成会话令牌并使用它。