我正在尝试为我的网站实现Google身份验证,它是React前端和Sping Boot REST后端。
对于我的React应用程序,我找到了一个提供Google Login按钮的库,我可以在其中指定我的应用程序的“client-id”,在Google开发人员的控制台中注册,其余的(将用户重定向到Google身份验证页面,检索访问令牌/ID令牌)由这个库完成。
现在我想把这个访问令牌发送到我的后端,用它来向谷歌发出请求,以验证这个前端用户是一个真实的谷歌用户,谁正确认证,并通过显示这个访问令牌谷歌获得这个用户的数据(我只想要电子邮件/名称/子,这是用户唯一的谷歌ID).我正在寻找一些库来交换这个谷歌访问令牌的用户数据?
我也很困惑,所有的oauth教程都说,当用户在google页面上进行身份验证时,我的应用程序将收到一个授权码,但我的前端收到的是acces token和id token。这是因为我使用的库吗?https://www.npmjs.com/package/react-google-login这是库
这是当用户在Google页面console.log(response) in browser上进行身份验证时,进入我的客户端应用程序的数据
谢谢
2条答案
按热度按时间sh7euo9m1#
我和你有同样的问题。我通过使用谷歌的GoogleIdTokenVerifier解决了它。设置非常简单。
这是我的代码:
字符串
Maven依赖项:
型
6uxekuva2#
也许我迟到了,但让我把它留在这里:
1.您正在使用的react库故意检索访问令牌,因为它假定您将使用它作为前端,因此使用此令牌,您可以向资源服务器发出任何进一步的请求。在这种情况下,资源服务器和auth服务器是相同的。例如,你想使用谷歌作为OAuth提供者,并在你的前端应用程序中显示谷歌的联系人。所以谷歌这里是认证服务器(react的lib使Google的API调用访问令牌)和资源服务器(使用访问令牌,您的react应用程序请求Google联系人)。
1.如果后台进入游戏,您需要获得一个授权码-一个临时代码,(不是前端;它是OAuth规范中的客户端)将交换访问令牌。React向auth服务器请求auth代码(Google/Facebook/Okta)将此代码发送到后端。后端将此代码沿着client_id,secret,grant_type.和OAuth规范中定义的其他参数发送到同一个OAuth服务器。Auth服务器比较所有参数,如果所有参数都正确,则返回令牌。后端接收令牌,因此我们可以声明我们将令牌交换为代码。下一步是将令牌发送回前端,将其存储在前端,并将其附加到后端的每个后续请求中。当然,我们还需要处理刷新令牌。
这可能是一个可能的控制器方法,用于将代码交换为令牌。
字符串