Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication 如何";使用谷歌“登录”;(id_令牌)*和*接收特定作用域的代码/访问_令牌(用于后端)_Authentication_Oauth_Google Oauth_Openid Connect_Google Openid - Fatal编程技术网

Authentication 如何";使用谷歌“登录”;(id_令牌)*和*接收特定作用域的代码/访问_令牌(用于后端)

Authentication 如何";使用谷歌“登录”;(id_令牌)*和*接收特定作用域的代码/访问_令牌(用于后端),authentication,oauth,google-oauth,openid-connect,google-openid,Authentication,Oauth,Google Oauth,Openid Connect,Google Openid,我正在构建一个应用程序,用户应该能够登录谷歌,但之后,后端服务器需要访问用户帐户中的一些数据(analytics.readonlyscope) 如果我理解正确,这可以通过“OAuth混合流”实现:在前通道上返回id\u令牌和authorization\u代码,但敏感的access\u令牌和refresh\u令牌只能在后通道上检索 然而,谷歌似乎没有提供这种功能 我想象我的前端可以在GoogleOAuth流之后接收一个id\u令牌和一个code作为URL参数。然后,React前端将将id_令牌和代

我正在构建一个应用程序,用户应该能够登录谷歌,但之后,后端服务器需要访问用户帐户中的一些数据(
analytics.readonly
scope)

如果我理解正确,这可以通过“OAuth混合流”实现:在前通道上返回
id\u令牌
authorization\u代码
,但敏感的
access\u令牌
refresh\u令牌
只能在后通道上检索

然而,谷歌似乎没有提供这种功能

我想象我的前端可以在GoogleOAuth流之后接收一个
id\u令牌
和一个
code
作为URL参数。然后,React前端将
id_令牌
代码
发布到我的Flask后端

然后后端将1)检查
id\u令牌
,2)将
代码
交换为
刷新/访问令牌
,并将经过身份验证的会话cookie返回到前端

现在我的问题是:

  • 我可以只使用返回的
    授权\ u代码
    登录我的用户吗?(即代替
    id\u令牌
    ?)安全含义是什么?在这种情况下,我可以继续在后端执行常规的授权代码流
  • 有没有一种方法,可以在我没有找到的同时从Google检索id_令牌和授权_代码
  • 有没有其他方法可以达到我想要的?(使用谷歌登录前端,安全检索只有后端才需要的访问令牌/刷新令牌)

谢谢

我会在后端处理令牌管理,而不是在前端

授权代码仅用作授权代码流的一部分。该代码只是一个随机令牌,不包含任何用户信息,因此您不能使用它来登录用户

你不能同时获得id\u令牌和授权\u代码,为什么?身份验证代码流是一个两步过程,因此您总是首先获得一个代码,然后可以提取id/access令牌


我会考虑看这个伟大的视频,来介绍如何使用SPA应用程序的认证。

为什么我不能使用<代码>授权代码>代码>代码在用户中签名?后端可以将代码交换为访问令牌并调用userinfo端点。这不会告诉端点谁刚刚登录吗?当您使用身份验证代码流时,您的想法是浏览器接收一个代码,然后将该代码传递给后端,这样后端就可以为您检索ID/访问令牌。收到id令牌后,您可以创建本地用户会话。关于“为什么我同时需要id\u令牌和授权\u代码”:Afaik这正是混合流的目的。“它允许您的应用程序立即访问ID令牌,同时仍然提供对访问和刷新令牌的安全检索。在您的应用程序需要立即访问有关用户的信息,但必须在访问受保护资源之前执行一些处理的情况下,这可能很有用。”延长时间。“()”在收到id令牌后,您可以创建本地用户会话。“换句话说,我不需要直接从前端使用
id\u令牌
,我只需要使用
authorization\u code
来完成登录流程,对吗?请参阅此视频+25:00