2011-02-01 23 views
7

我在构建一个RESTful应用程序。我打算使用OpenID进行用户认证。目前,我正在使用LightOpenID进行OpenID身份验证,并且我可以对我的用户进行身份验证。使用OpenID进行身份验证后,在REST应用程序中管理会话

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

  1. 既然,它是一个REST应用程序,我将不得不使用Cookie进行会话管理..对吧?
  2. 我在Cookies中存储什么值?
  3. 如何验证会话和用户注销?

我没有搜索与实现有关的示例,但所有示例都停在身份验证,并且不会谈论会话管理!我想知道如何管理应用程序中的会话,以及如果可能的话,最佳实践和关注实施方法。

如果您知道任何参考实现,请为我提供链接。

回答

14

重要:

首先,你应该记住一些重要的安全建议:

您的问题:

,因为它是一个REST应用,我会 有使用Cookie的会话 管理..对不对?

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

我在Cookies中存储什么值?

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

如何验证会话?

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

如何注销用户?

您只需拨打session_destroy,会话内存储的所有数据将被删除。


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

PS:

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

+0

感谢您对会议管理的这个大开眼界的解释。 +5为您提供的其他信息链接! – 2011-02-01 11:30:36

相关问题