具有多个用户的OAuth2客户端身份验证

时间:2018-06-22 16:45:20

标签: api oauth-2.0 google-calendar-api

我已经在FileMaker中构建了一个Room Booking应用程序,该应用程序可以通过经过OAuth2认证的Calendar API访问Google Calendar。

除了我不确定OAuth2客户端令牌流与将使用该系统的单个FileMaker / GCal用户之间的关系之外,所有其他方法都运行良好。

目前,我既是Google开发者控制台中项目的所有者,也是唯一的Beta测试人员,因此该系统自然可以与我的日历一起使用-我登录一次,将OAuth2的ClientID和Secret传递给OAuth2,生成我的日历代码,将其交换为令牌并刷新,然后退出。

但是,目前整个系统只有一个令牌和刷新,它们保存在单个行的FileMaker表中,因此,当我创建第二个测试用户时,事情仍然会转发到我的日历中。

这是我不清楚的地方。听起来很明显,但是很难找到一个明确的答案。

是否应该让每个用户使用相同的ClientID和Secret(我对他们保密)来生成自己独特的令牌集?

单个集是否足够,我误解了系统的其他方面(如果是,那是什么)?

简而言之:令牌是每个应用程序还是每个应用程序用户?

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:

客户(=应用程序)存储文件

客户ID :与该应用程序有关,适用于所有用户

客户机密:与该应用程序有关,对所有用户通用

重定向URI :与该应用程序有关,适用于所有用户

用户的东西

授权代码:特定于每个用户,需要客户端ID和客户端密钥,并在用户通过第三方服务(例如{{3})进行身份验证后从重定向URL中作为GET变量进行检索。 })

刷新令牌:特定于每个用户,需要客户端ID和授权代码

访问令牌:特定于每个用户,需要客户端ID和刷新令牌,并且受时间限制(通常为1小时),因此一旦过期,则需要重新生成一个新令牌。

NB用户不应看到客户端密钥(或者最好是客户端ID)。应该在应用程序的内部逻辑中使用它们,以生成对用户代码/令牌的调用,但看不到它们。

OAUTH2流量

因此,从本质上讲,OAuth2“流”如下:

1)您的客户ID +客户机密+他们对第三方服务的身份验证登录名=该特定用户的身份验证代码为重定向URI中的GET var

2)您的客户ID +您的客户机密+他们的验证码=刷新令牌和访问令牌

3)您的客户ID +您的客户机密+他们的刷新令牌=新的访问令牌