应该在asp.net项目的前端还是后端登录

问题描述

我正在尝试构建一个包含用户登录的 Web 项目。它将有一个 asp.net 前端和一个 asp.net 后端。我试图弄清楚这应该如何与用户上下文一起使用以及应该在哪里进行用户登录。我相信控制用户登录是后端责任,但似乎许多 3rd 方验证方法更喜欢它是前端。据我了解,如果我使用的是谷歌或微软验证之类的东西。它会尝试打开一个窗口,但我的用户看不到该窗口,因为它来自不为他们提供服务的后端,而是为前端服务器提供服务。

解决方法

根据您的评论,我将尝试在这里总结一下。请注意,这不是编码问题,确实应该在 https://security.stackexchange.com/ 上提出,但我会试一试。

您应该阅读的几个关键字:

  • 身份验证:这是验证实体(人、设备等)身份的过程
  • 授权:这是根据某些参数授予对给定资源访问权限的过程 - 通常基于经过验证的身份
  • 身份提供者:管理和验证实体(在您的示例中为 Google 或 Microsoft)身份的系统
  • 服务提供商:向经过身份验证的实体(在本例中为您的服务器应用程序)提供服务的系统

OAuth(您用作示例)不是身份验证协议,而是授权协议,这对您了解其中的区别很重要。然而,OpenID Connect 是一个建立在 OAuth 2.0 之上的协议/层,并且...

它允许客户端根据授权服务器执行的身份验证来验证最终用户的身份 [阅读:引擎盖下的“身份提供者”]。 [source]

复制自 Wikipedia(删除第 8 点以避免混淆):

两个进程的通信流程类似:

  1. (未图示)用户从应用程序请求资源或站点登录。
  2. 站点发现用户未通过身份验证。它为身份提供者制定请求,对其进行编码,然后将其作为重定向 URL 的一部分发送给用户。
  3. 用户的浏览器请求身份提供者的重定向 URL,包括应用程序的请求
  4. 如有必要,身份提供者会对用户进行身份验证(可能会要求他们提供用户名和密码)
  5. 一旦身份提供者对用户的身份验证感到满意,它就会处理应用程序的请求,制定响应,并将该响应连同重定向 URL 一起发送回应用程序。
  6. 用户的浏览器请求返回到应用程序的重定向 URL,包括身份提供者的响应
  7. 应用程序对身份提供者的响应进行解码,并进行相应的处理。

这就是你要问的流程。客户端(前端)唯一要做的就是按照它从您的应用程序提供的 URL 访问身份验证服务器。然后,该服务器提供经过验证的身份,您的客户端随后将其再次传递给您的服务器。

所以最重要的是,客户端/前端不执行身份验证,这是由身份提供者(第 3 方后端)处理的。