【问题标题】:REST API Authentication statelessREST API 身份验证无状态
【发布时间】:2020-05-16 14:00:48
【问题描述】:

谁能告诉我这些架构中哪些是有状态/无状态的?

  1. 带有会话用户身份验证的 REST API 存储在 redis 上。
  2. 带有 JWT 用户身份验证的 REST API 与 redis 上的撤销列表一起存储。
  3. 带有 oauth2 用户身份验证的 REST API。

我还想知道,就 oauth2 而言,我是否可以将资源和授权服务器作为同一个 API。是否值得拥有自己的授权服务器?

什么样的用户身份验证和应用身份验证可以轻松且安全地用作网站和移动应用所使用的 REST API 的启动?我知道这将是 2 个身份验证,一个用于用户,一个用于应用程序。

这对我来说更像是对我读过的所有内容的总结,所以我只需要简短的答案 - 已经阅读了很多内容。

【问题讨论】:

  • 无状态意味着您不会在两次服务器调用之间保持状态。如果你有一个用户会话,不管是什么存储系统,那么你就有了一个状态。
  • 感谢您的回答,这是否意味着第二个场景也是有状态的?这实际上将用户状态存储在黑名单中。
  • 第二种情况是无状态的,因为您没有任何会话,您将检查令牌以验证调用方凭据。从我的观点来看,第三种情况是要走的路。但请记住,OAuth2 并非设计用于用户身份验证,而是允许您的 API 接受来自资源所有者(例如用户)委托的客户端(例如 Web 应用程序)的请求

标签: rest api authentication oauth-2.0 jwt


【解决方案1】:

关键目标是将其外部化 - 您的 UI 和 API 代码将变得简单且无状态。这就是授权服务器启用的功能。

AS 是您与之交互和配置的东西 - 但您不会自己编写代码。

使用来自 Google 或 AWS 等云提供商的免费/廉价授权服务器

如果您做出正确的选择,遵循 OAuth 2.0 和 Open Id Connect 标准是成本最低的选择 - 尽管存在学习曲线。

例如,Cloud Samples 对我来说几乎是零成本 - 而且我的代码很简单 - 即使互联网上的任何人都可以运行它们。

在建立联系方面,可以浏览我的first tutorial,我希望它是直观且易于查看的。

【讨论】:

  • 这是否意味着如果我使用 cookie/会话身份验证和外部化会话将它们存储在 redis 上,这是无状态的?
猜你喜欢
  • 2011-11-12
  • 2013-01-27
  • 2014-01-08
  • 2017-12-15
  • 2019-03-31
  • 2018-07-26
  • 2019-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多