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

Abd*_*oof 7 php openid session session-management lightopenid

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

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

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

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

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

Alf*_*red 14

重要:

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

你的问题:

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

使用会话是最安全的(最好的),但当然会有更多的会话管理解决方案.但是如果你只使用cookies(没有php $_SESSION)那么你当然应该加密你的cookie.但我建议你只使用$ _SESSION.

我在Cookies中存储了什么值?

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

如何验证会话?

您可以通过检查会话中存储的信息来验证会话.我假设你至少$_SESSION['id'] = $openid->identity;在你的会话中存储.请记住,在用户使用openid登录您的网站后,您应该重新生成会话(id)以防止会话固定.

如何注销用户?

你只需调用session_destroy,就会删除会话中存储的所有数据.


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

PS:

cookie jar中的会话为您提供了会话的基本介绍(虽然我没有看到它提到会话固定:$).