基于cookie的身份验证如何工作?

时间:2013-07-21 04:21:47

标签: authentication cookies browser

有人可以一步一步地介绍基于cookie的身份验证的工作原理吗?我从未做过涉及身份验证或cookie的任何事情。浏览器需要做什么?服务器需要做什么?按什么顺序?我们如何保证安全?

我一直在阅读有关不同类型的身份验证和Cookie的信息,但我想了解如何将两者结合使用的基本描述 - 我只是读到它们经常一起使用但却找不到如何使用

2 个答案:

答案 0 :(得分:132)

Cookie基本上只是字典中的一个项目。每个项目都有一个键和一个值。对于身份验证,密钥可能类似于“用户名”,值将是用户名。每次向网站发出请求时,您的浏览器都会在请求中包含cookie,主机服务器将检查cookie。因此,身份验证可以像这样自动完成。

要设置cookie,您只需将其添加到服务器在请求后发回的响应中。然后,浏览器将在收到响应后添加cookie。

您可以为Cookie服务器端配置不同的选项,例如到期时间或加密。加密cookie通常称为签名cookie。基本上,服务器会加密字典项中的键和值,因此只有服务器才能使用这些信息。那么cookie就是安全的。

浏览器将保存服务器设置的cookie。在浏览器向该服务器发出的每个请求的HTTP标头中,它将添加cookie。它只会为设置它们的域添加cookie。 Example.com可以设置cookie并在HTTP标头中添加选项,以便将cookie发送回子域,例如sub.example.com。浏览器将cookie发送到不同的域是不可接受的。

答案 1 :(得分:11)

基于Cookie的身份验证

基于Cookie的身份验证在这4个步骤中正常运行 -

  1. 用户在登录表单中提供用户名和密码,然后单击“登录”。
  2. 发出请求后,服务器通过查询数据库来验证后端的用户。如果请求有效,它将使用从数据库获取的用户信息创建会话并存储它们,对于每个会话,创建一个称为会话ID的唯一ID,默认情况下会话ID将通过浏览器提供给客户端。
  3. 浏览器会在每个后续请求中提交此会话ID,会话ID将根据数据库进行验证,基于此会话ID网站将识别属于哪个客户端的会话,然后授予访问权限。

  4. 用户退出应用后,会话将在客户端和服务器端被破坏。