当前位置: 首页 > 知识库问答 >
问题:

基于令牌的身份验证的JWT与Cookie

白星渊
2023-03-14

我读了一些关于“JWT vs Cookie”的帖子,但它们只会让我更加困惑……

>

  • 我想澄清一下,当人们谈论“基于令牌的身份验证与cookie”时,这里的cookie仅指会话cookie?我的理解是,cookie就像一个介质,它可以用来实现基于令牌的身份验证(在客户端存储可以识别登录用户的东西)或者基于会话的身份验证(在客户端存储与服务器端会话信息匹配的常量)

    为什么我们需要JSON web令牌?我使用标准cookie实现基于令牌的身份验证(不使用会话id、不使用服务器内存或文件存储):set-cookie:user=innocent;Preferred-color=Azure,我观察到的唯一区别是JWT同时包含有效负载和签名...而您可以在http头的签名或明文cookie之间进行选择。在我看来,签名的cookie(cookie:'time=s%3a1464743488946.wvsjxbcspog3aigi4zcmmr9ybdvs%2b6ob2f3og6%2fycjm')更节省空间,唯一的缺点是客户端不能读取令牌,只有服务器才能读取...但我认为这没有问题,因为就像JWT中的声明是可选的,令牌不一定有意义

  • 共有1个答案

    容宏逸
    2023-03-14

    承载令牌和cookie最大的区别是浏览器会自动发送cookie,在这里需要将承载令牌显式添加到HTTP请求中。

    此特性使Cookie成为保护网站安全的好方法,用户可以在网站中使用链接登录并在页面之间导航。

    浏览器自动发送cookie也有一个很大的缺点,那就是CSRF攻击。在CSRF攻击中,恶意网站利用浏览器会自动将身份验证Cookie附加到该域的请求这一事实,欺骗浏览器执行请求。

     类似资料:
    • 我试图用PHP为两个主题相连的领域创建一个简单的SSO系统。 因此,我想知道是否可以将包含用户用户名的签名JWT令牌从域a存储到本地存储。然后使用来自域B的相同密钥来验证JWT,这将导致成功的身份验证。 我在谷歌搜索了一些答案,我发现其中一些包含了一个中间认证域,它将负责认证。但我只想把我有的两个域联系起来。 谢了。

    • 问题内容: 我有一个REST API,我正在使用Spring Security基本授权进行身份验证,客户端会为每个请求发送用户名和密码。现在,我想实现基于令牌的身份验证,当用户最初通过身份验证时,我将在响应标头中发送令牌。对于进一步的请求,客户端可以在令牌中包含该令牌,该令牌将用于对资源进行用户身份验证。我有两个身份验证提供程序tokenAuthenticationProvider和daoAuth

    • 在daoAuthenticationProvider中,我设置了自定义userDetailsService并通过从数据库中获取用户登录详细信息对其进行身份验证(只要使用授权传递用户名和密码就可以正常工作:basic bgllqxbpvxnlcjogn21wxidmqjrdturtr04pag==作为头) 但是当我使用X-AUTH-TOKEN(即constants.auth_header_name)

    • 问题内容: 我正在PHP Lumen中构建一个应用程序,该应用程序在登录时会返回令牌。我不知道如何继续进行。 我应该如何使用这些令牌维护会话? 具体来说,如果我使用reactjs或原始HTML / CSS / jQuery,如何将令牌存储在客户端,并在我为Web应用程序的安全部分提出的每个请求中发送令牌? 问题答案: 我通常要做的是将令牌保留在本地存储中,这样即使用户离开站点,我也可以保留令牌。

    • 我正在PHP Lumen中构建一个应用程序,它在登录时返回令牌。我不知道如何继续。 我应该如何使用这些令牌维护会话? 具体来说,如果我使用reactjs或vanilla HTML/CSS/jQuery,我如何在客户端存储令牌,并在我为web应用程序的安全部分发出的每个请求中发送它们?

    • null 我的自定义rest筛选器: 上面的内容实际上会导致应用程序启动时出现一个错误:有人能告诉我如何最好地执行此操作吗?pre_auth筛选器是执行此操作的最好方法吗? 编辑 使用Spring-security实现解决方案 希望它能帮助其他人…