0

我正在开发一个必须与它自己的自定义后端 API 对话的移动应用程序。我宁愿不推出自己的身份验证和帐户管理,我宁愿使用现有提供商的 Oauth2。

Google 允许您在服务器端验证 Google 生成的 Oauth 令牌,而无需调用 Google 的服务器。这很重要,因为我将分别验证每个请求。如果服务器每次都需要调用外部服务来验证令牌,那么服务将变得更慢且更难扩展。Google 在本节中提到了如何验证其令牌:验证令牌。除了需要大约每天刷新一次 Google 的证书外,您可以仅在您自己的服务器上验证 Google 生成的 OAuth 令牌。

我的问题是,是否有其他 OAuth 提供者不需要额外调用来验证令牌?Facebook 和 Twitter 似乎都需要调用他们的服务器来验证令牌。由于这些令牌具有过期时间,因此调用外部服务来验证此令牌并在令牌有效期内缓存此结果是否被认为是一种好习惯?如果这是一个好的做法,我也许可以考虑除了 Google 的 OAuth 之外的这些服务。

4

1 回答 1

1

我不知道有任何其他主要服务以 Google 的方式签署令牌。我怀疑(并希望)随着时间的推移它会变得更加普遍。

就 Facebook 和 Twitter 而言,您必须使用他们的 API 验证令牌,因为它们是颁发令牌的权威。为了避免不断地向他们的 API 发出请求,您可以做的一件事是发出您自己的令牌,设备在与您的 API 对话时将使用该令牌。

它可能看起来像这样:

POST /login?access_token=twitter_token -> 联系 Twitter 的 API -> 发布并返回您自己的令牌

发布 /api/foo?access_token=your_api_token

有了这个,只有一次调用外部验证服务。其余 API 调用使用令牌,您可以使用自己的数据库对其进行验证。

于 2013-05-03T02:37:25.860 回答