我正在努力理解有关 OAuth2 的一些内容。假设我有 SPA、移动客户端和服务器,我想通过 google 帐户授权用户。 显然,移动应用程序位于手机上,而 SPA 托管在我控制的机器上的某个位置。
我按照此网站理解是否正确:https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/communication/authentication?tabs=android?
通过移动客户端登录时:
用户打开手机客户端并点击“google登录”按钮
移动客户端向我的后端服务器发送http请求,建立TCP连接
后端服务器与 google auth 端点建立连接
3.a) 在 asp.net 中,例如
Request.HttpContext.AuthenticateAsync
函数
用户以某种方式与谷歌登录网站进行交互
4.a) 这是我的问题:这个重定向是如何工作的?当我的服务器建立此连接时,用户如何与 google auth 页面交互?
用户登录此谷歌页面后,谷歌返回到我的服务器一组声明,服务器可以使用这些声明来创建 JWT 令牌(也使用仅在我的服务器上的秘密)
此 JWT 令牌使用 TCP 连接从第 2 点返回到移动客户端。
我的理解正确吗? 当使用我控制的计算机上托管的 SPA 应用程序时,这种情况有什么不同? 我无法找到关于在任何时候建立哪些请求的解释,因为所有资源都通过现有的库来解释它,而这些库隐藏了大部分复杂性。
代码流程分为两部分:
应用程序打开系统浏览器,使用
front channel
与 Google 交互。然后用户在那里进行身份验证。
授权代码通过浏览器重定向返回到应用程序。然后应用程序将其发布到后端。然后后端向 Google 执行
back channel
请求,以将代码交换为令牌。
学习 OAUTH 消息
OAuth 提供了一个安全架构,正如您所指出的,了解它的工作原理非常重要,而不仅仅是调用供应商库的登录方法。
这是我关于 OAuth Messages 的文章,尽管该示例中没有使用后端。
还建议使用授权服务器来管理与 Google 的连接,并为您的应用程序和 API 颁发令牌。