将反应客户端谷歌登录转移到 ASP.NET 服务器端
Posted
技术标签:
【中文标题】将反应客户端谷歌登录转移到 ASP.NET 服务器端【英文标题】:Transferring react client-side google sign-in to ASP.NET server-side 【发布时间】:2020-02-03 16:48:11 【问题描述】:我正在使用react-google-login
库让用户通过谷歌在客户端登录我的应用程序,它工作正常并返回令牌和配置文件信息。
<GoogleLogin
clientId="XXXX.apps.googleusercontent.com"
buttonText="Login"
onSuccess=responseGoogle
onFailure=responseGoogle
cookiePolicy='single_host_origin'
/>
const responseGoogle = (response) =>
console.log(response);
以下是服务器上启用谷歌身份验证的配置:
services.AddAuthentication()
.AddGoogle(options =>
IConfigurationSection googleAuthNSection =
Configuration.GetSection("Authentication:Google");
options.ClientId = googleAuthNSection["ClientId"];
options.ClientSecret = googleAuthNSection["ClientSecret"];
);
但是,我不知道如何将这个成功的登录转移到 asp.net 服务器端。如何使用google发送的token在服务器端登录用户?我想在两种情况下这样做:(a)系统中的电子邮件与 gmail 不匹配,(b)系统中的电子邮件与 gmail 匹配。感谢您的帮助。
【问题讨论】:
你在服务器端使用什么样的认证机制?通常,身份验证发生在服务器端,它会从您的身份验证器获取 JWT 令牌,并将其返回给前端。 @GlennvanAcker 感谢您的评论。事实上,我做到了。但是,那么我该如何从前端处理它呢?我是否将其与每个请求一起发送到服务器?我不清楚。 是的,据我所知,您需要将它包含在您的请求中,因为您将使用它来保护您的控制器操作,它需要能够验证您的客户端。它确实是通过 google 进行身份验证的客户端,但它需要这样做以保护您的 API。否则,任何人都可以直接与 API 对话。 【参考方案1】:对auth过程的小误解。您可以通过两种方式进行:
client side OAuth (react-google-login) server side OAuth (Microsoft.AspNetCore.Authentication.Google)但是您试图将它们混合在一起,这是可能的,但不是很有用,因为处理令牌过期更难,而且客户端的范围也受到安全原因的限制。
你需要按照下一条指令来实现服务器端 OAuth,你不需要使用react-google-login
:
-
Facebook, Google, and external provider authentication in ASP.NET Core
Google external login setup in ASP.NET Core
【讨论】:
如果它可以帮助任何人(因为我花了一些时间进行故障排除),我已经使用 Asp.NET Identity 记录了服务器端流程mahdikarimipour.com/blog/…。以上是关于将反应客户端谷歌登录转移到 ASP.NET 服务器端的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 ASP.NET 将资金从商家 Paypal 帐户转移到 EndUser Paypal 帐户?
如何通过 ASP.NET 将资金从商家 Paypal 帐户转移到 EndUser Paypal 帐户?