投票:OAuth2.0 技术选型你会怎么选

1. 前言

在使用 OAuth2.0Authorization Server (受权服务器)是一个回避不了的设施,在大多数状况下咱们调用的是一些知名的、可靠的、可信任的第三方平台,好比 QQ、微信、微博、github 等。咱们的应用只做为 Client 进行注册接入便可。也就是说咱们只须要实现 OAuth2.0 客户端的逻辑就能够了,无须关心受权服务器的实现。然而有时候咱们依然但愿构建本身的 Authorization Server。咱们应该如何实现?今天不会讨论具体的技术细节,来谈谈 OAuth2.0 的技术选型。java

2. Spring Security OAuth2 现状

在作 Spring Security 相关教程 的时候首先会考虑 Spring 提供的 OAuth2.0 功能。当我去 Spring 官网了解相关的类库时发现竟然 SpringOAuth2.0 类库即将过时的通知,有图有真相:git

总结如下就是 Spring Security OAuth 的模块即将过时,后续的功能已经迁移到 Spring Security 5.2.x 中,可是不会再提供 Authorization Server 的功能。 在官方声明中还提到, 当前 Spring Security OAuth 分支是 2.3.x2.4.x2.3.x版本将于 2020 年 3 月寿命终止。咱们将在达到功能均等后至少一年支持 2.4.x 版本。所以鼓励用户开始将其旧版 OAuth 2.0 客户端和资源服务器应用程序迁移到Spring Security 5.2 中的新支持。详细参见 官方博客.github

3. 对 OAuth2.0 的技术选型

从上面的信息看来, Spring Security 将来依然提供 OAuth2客户端支持资源服务器支持受权服务器 将逐渐退出 Spring Security 的生态环境。因此若是没有受权服务器需求的状况下选择 Spring Security 依然是没有问题的,一旦有这个需求咱们该如何选择?我这里调研了几个开源免费的项目。spring

3.1 keycloak

keycloakRedHat 公司出品。是一个致力于解决应用和服务身份验证与访问管理的开源工具。能够经过简单的配置达到保护应用和服务的目的。它提供了身份和访问管理的有用功能:apache

  • 单点登陆(SSO),身份代理和第三方登陆。
  • 支持 OpenID ConnectOAuth 2.0SAML 2.0 等标准协议。
  • 用户集中管理。
  • 客户端适配器,轻松保护应用程序和服务。
  • 可视化管理控制台和账户管理控制台。
  • 可扩展性、高性能、快速实现落地。

文档比较完毕,并且是一个成熟的、免费的商业级产品。服务器

3.2 Nimbus SDK

全称是 Nimbus OAuth 2.0 / OpenID Connect SDK,这是一个类库。Spring 官方在博客中提到可使用该类库构建 Authorization Server,它同时支持 OAuth2.0OpenID Connect,比较完整地实现了这两个协议,并且针对补充协议也在积极的跟进。缺点在于中文教程很少并且是一个类库性质的。不过官方提供了 DEMO ,有能力的同窗入门也不算难事。微信

3.3 Apache Oltu

Apache Oltu 是 Apache 基金会旗下的一个毕业项目。提供了 OAuth2.0 的经常使用实现,根据文档提供的信息来看上手仍是比较简单的,模块化的提供了对 Authorization Server、Resource Server、Client、JOSE、 的支持。中文教程网上仍是有很多的,缺点在于项目维护比较滞后,最新的版本是 2016 年发布的。模块化

3.4 Vertx-auth-oauth2

vertx-auth-oauth2 属于 Vert.x 生态,提供了比较完整的 OAuth2.0 实现,并且项目维护比较活跃,惟一的缺点在于有技术栈的局限性。工具

4. 总结

针对 Java 的一些 OAuth2.0 技术选型参考就是上面几个了。不知道你会选择哪个? 我在公众号:Felordcn 发起了一个关于 OAuth2.0 技术选型的投票,但愿你可以参与。投票传送门【复制连接到微信中打开投票】性能

相关文章
相关标签/搜索