iOS&node.js:如何validation传入的访问令牌?
我有一个iOS使用OAuth和OAuth2提供商(Facebook,谷歌,微博等)来validation用户,并提供访问令牌。 除了名称和电子邮件地址等最小数据之外,应用程序不会将这些服务用于除authentication以外的任何其他服务。
然后,应用程序将访问令牌发送到服务器以指示用户已通过身份validation。
服务器是用Node.js编写的,在做任何事情之前,需要根据正确的OAuth *服务validation提供的访问令牌。
我一直在环顾四周,但到目前为止,我发现的所有node.jsauthentication模块似乎都是通过服务器提供的网页login和authentication的。
有谁知道任何node.js模块,可以做一个提供的访问令牌的简单validation?
据我所知(就我所知,通过阅读规格说明),OAuth和OAuth 2规范并没有指定访问令牌validation的单个端点。 这意味着您将需要每个提供程序的自定义代码来validation访问令牌。
我查找了你指定的端点要做什么:
Facebook的
似乎其他人已经使用Facebook的图表API的'我'端点来检查令牌是否有效。 基本上,要求:
https://graph.facebook.com/me?access_token={accessToken}
谷歌
谷歌有一个专门的terminal获取访问令牌信息,也有很好的文档 。 基本上,要求:
https://www.googleapis.com/oauth2/v1/tokeninfo?access_token={accessToken}
推特
Twitter似乎没有一个真正明显的方式来做到这一点。 我会怀疑,因为帐户设置数据是非常静态的,这可能是最好的validation方式(取回推文大概会有更高的延迟?),所以你可以请求(与适当的OAuth签名等):
https://api.twitter.com/1.1/account/settings.json
请注意,此API的速率限制为每个窗口15次。
总而言之,这似乎比第一次出现更复杂。 在服务器上实现某种会话/身份validation支持可能是一个更好的主意。 基本上,您可以validation一次您获得的外部OAuth令牌,然后为您的用户分配自己的会话令牌(使用您的服务器上的用户ID(电子邮件,FB ID,无论)进行身份validation),而不是继续向OAuth提供商请求您获得的每个请求。
希望有所帮助!
要获得有关Google使用的令牌的信息,请仔细阅读版本api https://www.googleapis.com/oauth2/v3/tokeninfo?access_token={accessToken}
- 正确的护照策略匿名移动应用程序
- SPA和SSO中无状态身份validation的性能(单点login)
- req.session.passport和req.user空白,req.isAuthenticated在初次成功login后使用passport-facebook返回false
- 将护照openID-stategy与智威汤逊结合在一起
- 如何在使用feathersjs响应NodeJs之前发送令牌jwt来validation?
- 在基本Http Auth Express.js之后redirect
- 如何使用Node.JS请求HTTP摘要authentication?
- 是否可以在Express上的白名单路由中应用基本身份validation/中间件?
- Node.jsauthentication没有护照:是json的networking令牌可靠吗?