如何实现oauth / authorize令牌流的无状态管理

时间:2018-05-16 19:12:05

标签: node.js oauth

我使用Node.js来实现api,但答案可能是以语言无关的方式回答。

给定一个看起来像这样的授权流URL:

https://auth.example.com/oauth/authorize?client_id=client_id&redirect_uri=callback_url&response_type=response_type&state=nonce

我想通过api执行此流程。

  • 将用户从应用(例如原生移动或网络水疗中心)重定向到 api端点/{third_party_oauth_privder}/token(此api已构建 由我)
  • 第一步的重定向带有持票人令牌 访问api我的建筑物(除其他外,提供用户的身份)。
  • 我需要通过类似于的授权网址重定向用户 一个上面,一旦用户按下"允许"在使用第三方oauth提供程序进行身份验证后,用户将被重定向回api I m建筑物中的端点。此时,我需要能够将授权上下文(令牌和允许的第三方用户数据)与我系统中的用户相关联。 我想从api的角度以无状态的方式做到这一点。

护照等图书馆似乎是以会话状态执行此操作,但我不想在api中进行会话(即使仅针对这一个用例)。我可以通过在我的系统中将用户配置文件信息写在一起来利用nonce,并在回调中查找状态参数中的nonce来查找关联用户而不保持api中的任何状态...但这看起来很奇怪。

什么是符合oauth标准的方式来处理这种情况?我是否真的必须为此流程维护会话状态才能使其工作?如果是这样,这会如何扩大?我是否需要在Redis中存储该会话状态以确保回调api实例具有此会话状态?必须是一个相当优雅的解决方案,不需要状态:/或者可能不是。

非常感谢任何建议/示例/链接/等。

0 个答案:

没有答案