OpenID登录机制-保持登录


OpenID sign in mechanism - Stay signed in

我正在开发一个PHP网站,我试图使用OpenID登录机制。我想要一个类似于StackOverflow的行为。我的意思是,当我打开stackoverflow时,我已经登录了。我在StackOverflow上发现了两个相关的问题:

OpenId + remember me/stay logged in

使用Twitter登录,并保持登录状态(PHP)

我明白我应该登录用户,如果这是他/她的第一次,我应该注册用户并在他/她的系统中设置一个cookie。然而,我想知道的是我应该在cookie中存储什么?用户名/密码组合?这似乎是个安全问题。另一个问题是我该去哪里找饼干?我希望有一个简单的教程/代码示例。谢谢你。

这是基本的web应用程序会话管理与cookie和OpenID在这里没有什么区别。

不,绝对不要在cookie中存储用户名和密码。饼干充当"不记名令牌",这意味着谁拥有饼干谁就能进入。在cookie中存储的最好的东西是一个不可猜测的任意键,您可以使用它在应用程序中的表中查找真实信息。因此,用户显示一个cookie"myappsession"和绑定到您的域的值"234871nb341adf"。然后,您的应用程序将在本地数据存储中查找"234871nb341adf"的值,并查看它是否与有效用户绑定。您最好还检查该用户是多久以前在那里的。如果它是一个有效的会话,并且在您的时间和使用限制内,则用户将自动登录。

对于RP方面的额外偏执,您可以使用OpenID的checkid_immediate模式进行后台调用,以查看用户是否仍登录到他们的IdP。如果它们不是,那么您至少知道要将它们发送给哪个提供商进行重新验证,并且可以提供更好的用户体验。

如果你想让你的网站是真正安全的,你应该做你所有的会话通过HTTPS和标记你的cookie为"安全"answers"HTTPOnly",这是记录在setcookie功能手册页:http://php.net/manual/en/function.setcookie.php