我正在开发一个移动应用程序,该应用程序必须与它自己的自定义后端API进行通信。我宁愿不推出自己的身份验证和帐户管理,我宁愿使用现有提供商的Oauth2。
Google允许您验证Google生成的Oauth令牌服务器端,而无需致电Google的服务器。这很重要,因为我将分别验证每个请求。如果服务器每次都需要调用外部服务来验证令牌,那么服务将变得更慢并且难以扩展。 Google在此部分提到了如何验证其令牌:Validating Tokens。除了需要每天大约刷新一次Google的证书之外,您可以单独在自己的服务器上验证Google生成的OAuth令牌。
我的问题是,是否有其他OAuth提供商不需要额外调用来验证令牌?对于Facebook和Twitter,您需要调用其服务器来验证令牌。由于这些令牌具有到期时间,因此调用外部服务来验证此令牌是一种好习惯,并在令牌的有效期内缓存此结果?如果这是一个很好的做法,除了谷歌的OAuth之外我还可以考虑这些服务。
答案 0 :(得分:1)
我不知道以Google的方式签署令牌的任何其他主要服务。我怀疑(并希望)它会随着时间的推移变得更加普遍。
就Facebook和Twitter而言,您必须使用其API验证令牌,因为它们具有发布令牌的权威性。为避免不断向API发出请求,您可以做的一件事就是发出自己的令牌,设备在与您的API交谈时会使用该令牌。
可能看起来像这样:
POST / login?access_token = twitter_token - >联系Twitter的API - >发出并返回您自己的令牌
POST / api / foo?access_token = your_api_token
有了这个,只有一次调用外部验证服务。其余的API调用使用令牌,您可以使用自己的数据库进行验证。