程序员在开发自己的 oAuth 服务时应该考虑哪些技术细节?

What technical detail should programmers consider while developing their own oAuth service?

程序员在开发自己的 oAuth 服务时应该考虑哪些技术细节?

一直在努力寻找指导方针,但发现大多数 oAuth 相关文章都是从消费者的角度讨论的(即如何使用他人的服务) .我想用我的授权服务和资源服务设计我自己的 oAuth 系统。我应该遵循哪些技术细节?

您可能已经阅读了 RFC,但以防万一您还没有阅读,它们是您想要开始的地方:

  1. oAuth 2.0“核心”(RFC 6749 and 6750
  2. 代码交换证明密钥 (PKCE) (RFC 7636)

针对 oAuth 实施者(客户端或其他)的最佳 'packaged' 指南可通过 IETF 最佳当前实践 (BCP) 获得。大多数人都知道 IETF RFC 和(令人困惑的)BCP 作为带有 RFC 编号的 RFC 发布。尽管如此,它们仍是最佳实践 not formal specifications:

The BCP process is similar to that for proposed standards. The BCP is submitted to the IESG for review, and the existing review process applies, including a "last call" on the IETF announcement mailing list. However, once the IESG has approved the document, the process ends and the document is published. The resulting document is viewed as having the technical approval of the IETF, but it is not, and cannot become an official Internet Standard.

您要审核的 BCP:

  1. oAuth security(截至撰写本文时为最新)
  2. oAuth for browser-based apps(截至撰写本文时为最新)。
  3. oAuth for native apps(2017 年作为“核心”oAuth 2.0 RFC 的更新发布,仍然是一本好书)
  4. JSON Web Tokens for oAuth(最新)

这些文档以威胁模型术语为框架 - 它们涵盖了攻击(或“安全考虑”作为稀释格式)和对策。您可能正在寻找一种更直接的构建块类型的路线图,也许应该有一个作为教育工具。真实世界的 oAuth 实现必须使用威胁模型的初步证据来开发。

身为一名武士said...未经考验的剑术就像在陆地上掌握的游泳艺术。

我也很想知道您为什么要开发自己的身份验证解决方案。

但撇开这个不谈,有一个开源项目完全可以满足您的要求 - Identity Server。您可以查看他们的源代码或分叉它并在其上构建一些东西。

此外,请检查 "identigral" 对各种文档的回答。