程序员在开发自己的oAuth服务时应考虑哪些技术细节?
一直在尝试寻找指南,但是发现大多数与oAuth
相关的文章都是从消费者的角度进行讨论的(即如何消费其他服务)。我想使用授权服务和资源服务设计自己的oAuth
系统。我应该遵循哪些技术细节?
您可能已经阅读了RFC,但以防万一,您是想开始的地方:
oAuth实施者(客户端或其他)的最佳“打包”指南可通过IETF最佳现行实践(BCP)获得。大多数人都了解IETF RFC,并且(令人困惑地)BCP是作为带有RFC编号的RFC发布的。尽管如此,它们还是最佳做法,not formal specifications:
BCP流程类似于拟议标准的流程。 BCP是提交给IESG进行审核,以及现有的审核流程适用,包括IETF公告邮件上的“最后通话”清单。但是,一旦IESG批准了该文件,结束并发布了文档。生成的文档被视为具有IETF的技术批准,但不是,也不能成为正式的Internet标准。
您要查看的BCP:
这些文档以威胁模型术语构成框架-它们涵盖了攻击(或“安全性考虑因素”,作为一种稀释格式)和对策。您可能正在寻找一种更简单的路线图构建块类型,也许应该有一种教育工具。现实世界中的oAuth实现必须使用威胁模型的初步证据来开发。
作为一个武士said:...在战斗中未经考验的剑术就像在陆地上掌握的游泳艺术。
我也很想听听您为什么要开发自己的身份验证解决方案。
但是抛开这些,有一个开源项目完全可以满足您的要求-Identity Server。您可以签出他们的源代码,也可以对其进行派生并在其上面构建内容。
另外,请在各种文档上查看“身份”答案。
OAuth 2.0的一个特定方面,特别是为了提高安全性,是使用旋转刷新令牌。 IETF在this RFC中也建议这样做。它基本上可以帮助检测会话令牌被盗。
如果您发现有趣的地方,请here is a blog post突出显示一些您应该了解的实现细节。