首页 > 解决方案 > 如何在 Asp.Net Core Web Api 和 spa(Angular)中正确实现“Google 登录”?

问题描述

我在我的谷歌控制台中注册了一个应用程序,我得到了我的 client_id 和 client_secret。
到目前为止,我检查的每个解决方案都没有在任何级别使用 client_secret 来完成这项工作。
什么是 client_secret 用于虽然?
我在 spa 端使用angularx-social-login .. 所以我使用我的 client_id 从谷歌获取令牌,然后将其发送到我的后端服务器.. 我现在该怎么办?
如何验证我在后端从谷歌获得的令牌?
通过“验证”,我的意思是如何确定令牌是使用我的 SPA 和我自己的 WebApplication client_id 获得的?


更新:感谢Mosia Thabo这个答案帮助了我。谢谢大家。

标签: angularasp.net-coreasp.net-core-webapigoogle-authenticationgoogle-signin

解决方案


在 OAuth2 中有 3 方:服务器(Google)、客户端(您)和用户(您的用户)。用于在client_secret安全环境中进行客户端到服务器的通信,其中“安全”意味着您不必向用户公开您的凭据。由于您使用的 SPA 在客户端公开其所有源代码,因此您不能在该源代码中包含您的客户端密码,否则您的用户将能够伪装成您的服务器并且他们将拥有完全访问权限到您所有用户的信息。因此,您最有可能使用 OAuth2 工作流程,例如仅依赖于密码授予client_id和其他凭据(例如属于用户的密码和用户名)的密码授予。最好遵循完整的授权代码工作流程您在哪里使用client_id并重定向您的用户以通过服务器进行身份验证,这样您就不必处理敏感的用户数据,如密码。

要验证访问或 ID 令牌,您必须将令牌发送到后端并在那里进行验证,或者使用 Google 的tokeninfo端点


推荐阅读