oauth-2.0 谷歌智能家居行动OAuth 2.0服务器

rt4zxlrg  于 2022-10-31  发布在  其他
关注(0)|答案(2)|浏览(174)

我正在为Google Assistant创建一个智能家居操作,该操作将与我的REST API服务器集成,但我在OAuth 2.0步骤中遇到了问题,本指南中对此进行了详细介绍
显然,需要两个终点:
1.返回授权代码的授权终结点
1.一个令牌交换端点,它接受身份验证代码并返回访问和刷新令牌
我了解构建这些端点的详细信息,但有一个例外。在授权代码端点中,您必须:
1.检查使用者是否已登入您的服务。如果使用者未登入,请完成您服务的登入或注册流程。
1.生成授权码,供Google用于访问您的API。授权码可以是任何字符串值,但它必须唯一地代表用户、令牌所针对的客户端以及代码的过期时间,并且不能猜测。您通常会发出大约10分钟后过期的授权码。
这两个步骤都要求OAuth服务器具有关于用户的信息,但是对端点的调用(由Google进行)仅提供以下内容:

  • 客户端ID
  • 重定向URI
  • 状态
  • 显示器
  • 响应类型
  • 用户区域设置

据我所知,这些都不允许您检索用户。
这里是否遗漏了什么,或者我是否可以跳过步骤2(登录用户),生成授权代码(步骤3),而不在代码中表示用户?
我认为auth代码需要包含用户信息,这样当它被发送到令牌交换端点时,我们就可以知道要为哪个用户生成令牌。

8ehkhllq

8ehkhllq1#

我已经使用了OAuth 2.0的keyclock服务器,并使用授权码授权类型进行身份验证。
在具有授权码授权类型的OAuth 2.0中,有两种类型的URL,第一种是Auth URL,第二种是访问令牌URL
当Auth URL执行时,它将重定向到登录页面,在该页面中,我们需要使用用户名和密码登录,并将给予auth代码
然后,Google将使用该代码创建一个访问令牌,并使用这些令牌访问资源服务,如SYNC、QUERY、EXECUTE和DISCONNECT。

j9per5c4

j9per5c42#

OAuth2.0不包括身份验证过程,实际上它是委托授权框架。但在实际情况中,您的系统需要知道您将向谁的资源授予访问权限,除非您只有一组资源并且不属于任何特定用户(在这种情况下,您可以跳过身份验证/登录页面)。
据我所知,这些都不允许您检索用户。

  • 〉是的,你是对的。要解决这个问题,你需要创建你的登录页面作为授权端点,并使用户登录与他们的凭据,这样你就可以确切地知道谁将授权第三方(谷歌服务)访问他们的资源。
    这里是否遗漏了什么,或者我是否可以跳过步骤2(登录用户),生成授权代码(步骤3),而不在代码中表示用户?
  • 〉我想你误解了Oauth2.0的定义,但是你可以跳过第二步,谷歌不关心它(如果你的要求符合我上面描述的),他们只是推荐通常的流程。
    我认为auth代码需要包含用户信息,这样当它被发送到令牌交换端点时,我们就可以知道要为哪个用户生成令牌。
  • 〉是的,你说得对。

相关问题