第 8 章 保护REST

本章内容:

  • 使用 OAuth 2 保护 API;

  • 创建授权服务器;

  • 为 API 添加资源服务器;

  • 消费 OAuth 2 保护的 API。

你体验过代客泊车服务吗?它的概念很简单:我们将车钥匙交给商店、酒店、剧院或餐馆入口处的代客泊车员,他们会帮助我们找到一个停车位,然后在我们需要的时候,再将车还给我们。可能是因为我看过太多次《春天不是读书天》(Ferris Bueller’s Day Off)这部电影了,所以我始终不愿意把车钥匙交给陌生人,并指望他们能够照看好我的车。

尽管如此,代客泊车涉及我们是否相信别人能够照看好我们的车这一问题。很多新车都提供了“泊车钥匙”,这是一种特殊的钥匙,只能用来打开车门和发动引擎。这种情况下,我们所授予的信任就是有一定范围限制的。泊车员不能用这种钥匙打开车上的杂物箱或后备箱。

在分布式应用中,软件系统之间的信任至关重要。即便是在一个简单的场景中,客户端应用消费后端的API,很重要的一点就是要求客户端是被信任的,任何试图使用同一API的其他人都应该被阻挡在外。与泊车钥匙类似,我们授予客户端应用信任的范围应该只局限于让客户端完成其任务所必需的功能。

保护REST API与保护基于浏览器的Web应用是不同的。在本章中,我们将会研究OAuth 2,一个专门为API安全所创建的规范。通过这种方式,我们会看一下Spring Security对OAuth 2的支持。但首先,我们了解一下OAuth 2是如何运行的,为后面的讲解打下基础。