使用OpenID进行身份验证后在REST应用程序中管理会话

时间:2011-02-01 06:03:47

标签: php session openid session-management lightopenid

我正在构建一个RESTful应用程序。我计划使用OpenID进行用户身份验证。目前,我使用LightOpenID进行OpenID身份验证,我可以对用户进行身份验证。

我的问题是下一步是什么?认证后!

  1. 因为它是一个REST应用程序,我将不得不使用Cookie进行会话管理..对吗?
  2. 我在Cookies中存储了什么值?
  3. 如何验证会话和用户注销?
  4. 我确实搜索了有关实现的示例,但所有示例都停止了身份验证,并且没有谈论会话管理!我想知道您如何管理应用程序中的会话,以及实施方法时可能的最佳实践和关注点。

    如果您了解任何参考实施,请提供链接。

1 个答案:

答案 0 :(得分:14)

重要的:

首先要记住一些重要的安全建议:

您的问题:

  

因为它是一个REST应用程序,我会的   必须使用Cookie进行会话   管理..对吗?

使用会话是最安全的(最好),但当然还有更多solutions to session management。但是如果你只使用cookies(没有php $_SESSION)那么你当然应该加密你的cookie。但我建议你只使用$ _SESSION。

  

我将哪些值存储在Cookie中?

您不会在Cookie中存储任何内容。 $_SESSION为您创建唯一的Cookie(自动=>您不必考虑它)。您放入$_SESSION的所有内容都存储在服务器上,因此用户无法读取此内容。您可以存储您希望存储在会话中的任何信息,但请记住,最好不要在应用程序中存储敏感数据(密码,信用卡,密码等)。我已经知道你的$ _SESSION存储在服务器上,但是具有与光盘(或数据库)上存储的会话相匹配的唯一标识符的cookie可能是guessed(spoofed)

  

如何验证会话?

通过检查会话中存储的信息来验证会话。我假设您在会话中至少存储了$_SESSION['id'] = $openid->identity;。请注意,在用户使用openid登录您的网站后,您应该regenerate your session(id)阻止session fixation

  

如何退出用户?

您只需拨打session_destroy即可删除会话中存储的所有数据。


我希望这能解释你所有的问题。

PS:

A session in the cookie jar为您提供会话的基本介绍(虽然我没有看到它提及会话固定:$)。