前端用户认证和后端用户认证的区别

Posted

技术标签:

【中文标题】前端用户认证和后端用户认证的区别【英文标题】:Difference between frontend user authetication and backend user authentication 【发布时间】:2015-11-15 14:39:45 【问题描述】:

最近有人问我前端用户身份验证和后端用户身份验证之间的区别(在一次采访中)。我无法回答他的问题。他问我你在网上看到的身份验证是在前端还是后端完成的,我回答后端。然后他问什么是前端认证,我无法回答。 我搜索了一下,但无法得到两者之间的确切区别,前端所做的与后端所做的。如何、在哪里以及为什么使用它们?

任何帮助将不胜感激。

编辑:我读了一些相关的Here。它谈到了一种叫做双重身份验证的东西。尽管如此,我还是无法理解前端身份验证的概念。

【问题讨论】:

嗯,我想我不能再回答这个问题了。在我看来,没有上下文是无法回答的。换句话说,什么是“前端”和“后端”? 我一直认为身份验证是一个后端功能,而前端更关心的是验证(当然也应该在后端进行)。如果可能(例如,通过 javascript 使用 OAuth),我会对安全性有所保留,至少 一些 后端参与。但是,我愿意对此进行更正,因为这不是我的专业领域。 @MichaelMcMullin 是的,你是对的。后端服务器总是有一些参与。我在问题中给出的链接也是如此。但是,关键是什么是前端认证呢?它涉及什么? 这个问题很有趣,我自己偶然发现的。我没有发布答案,因为我还需要确切地知道差异。关于后端和前端的示例,我只能指向 Passport.js 和 Vue 的 FB 登录模块。这确实与您处理与身份验证服务器的大部分冗长聊天的位置有关,但我非常感谢您对此事进行澄清。 【参考方案1】:

我的理解是,在后端对用户进行身份验证后,会向浏览器发出一个唯一的 cookie。这可能被认为是前端身份验证,因为它允许用户继续使用站点而无需登录到每个页面。网站会根据 cookie 数据识别每次后续调用的用户,但会受到任何限制。

一个简单的例子是存储用户名和密码的 cookie,但显然这不是很安全。更复杂的方法将涉及加密、SSL、各种标志(securehttp-onlyexpiry-date)等等。

【讨论】:

【参考方案2】:

这个问题是主观的,可以根据上下文有太多的解释。有一种用户到系统身份验证和系统到系统身份验证。在这种情况下,最接近前端身份验证的类比是用户到系统身份验证,而不管底层协议和是否使用显式后端堆栈。每当两个系统必须在没有用户参与的情况下相互进行身份验证时,就类似于后端身份验证。同样,这是主观的并且非常符合上下文

【讨论】:

以上是关于前端用户认证和后端用户认证的区别的主要内容,如果未能解决你的问题,请参考以下文章

JWT的认识和session的区别

使用 Vue.js 和 Auth0 进行前端认证时如何在 Django 的后端数据库中创建用户

springboot+vue实现用户统一认证管理-前端实现

使用 jwt 令牌认证识别用户

0019 基于DRF框架开发(JWT token认证)

基于JWT用户认证方式(前后端分离)