【发布时间】:2021-04-05 20:28:23
【问题描述】:
我正在使用 Elixir 的 Phoenix 框架构建一个 REST API。在 API 中,我需要通过电话号码(即通过发送 SMS OTP 代码)对用户进行身份验证。在对用户进行身份验证后,身份验证服务器将访问令牌和刷新令牌发送给客户端。客户端(移动应用程序)将这些令牌存储在本地,并在对资源服务器的每个请求中将访问令牌作为 Authorization: Bearer <Access_Token> 发送到 HTTP 标头中。我的实际问题是,资源服务器如何验证从移动应用/客户端收到的访问令牌?
资源服务器是否需要联系身份验证服务器来验证访问令牌?那将是很多开销。请帮助我了解 RestFull API 身份验证。
感谢您花时间阅读我的问题。
【问题讨论】:
-
你知道,您并不需要使用不记名令牌来保护网络服务。我个人不是不记名令牌的粉丝,因为您只能在安全的通信渠道中安全地使用它们。您是否考虑过使用签名请求?
-
此外,身份验证方案与 REST 关系不大,反之亦然。 REST 是具有特定狭义技术和理论定义的特定技术术语,涉及如何通过给定传输表示和管理应用程序状态 - 您可以将承载令牌与非 REST Web 服务一起使用,并且您 可以将有状态的身份验证系统与其他无状态的 REST Web 服务一起使用。
-
到目前为止我还没有听说过签名请求,请您告诉我更多有关它的信息,或者博客/链接真的会有所帮助。
-
对于 OAuth 的签名请求功能,没有比 RFC 草案更规范的了:tools.ietf.org/html/draft-ietf-oauth-signed-http-request-03 - 尽管签名请求的概念可以追溯到至少 (现已弃用)HTTP Digest 身份验证方案。虽然我确信还有其他使用签名事务进行身份验证的方案早于 HTTP(一个很好的例子是 US EAM system,它证明了 分布式 和 分散式 认证系统)。
-
从历史上看,需要现有 信任关系 的 签名消息 概念可以追溯到几个世纪前because that's how the banking systems of the world worked in medieval times。
标签: rest elixir phoenix-framework