Oath2.0 cookbook--使用Spring Security保护您的Web应用程序 (1)

在本章中,我们将介绍以下食谱:

  1. 使用授权码授予类型保护资源
  2. 支持隐式授予类型
  3. 使用“资源所有者密码凭证”授予类型作为OAuth 2.0迁移的方法
  4. 配置客户端凭据授予类型
  5. 添加对刷新令牌的支持
  6. 使用关系数据库存储令牌和客户详细信息
  7. 使用Redis作为令牌存储
  8. 实施客户注册
  9. 在中间打破OAuth 2.0提供程序
  10. 使用Gatling使用共享数据库对令牌验证过程进行负载测试

介绍

如今,我们存在一些场景,这些场景要求应用程序与大量服务进行交互,并且还必须自己提供以API形式分布在整个网络中的服务。 尽管如此,通常允许我们的应用程序的用户向第三方应用程序授予权限,在这种情况下,OAuth 2.0被证明是一个不错的选择。

在本章中,您将学习如何使用OAuth 2.0规范描述的所有授予类型来创建,配置和分发涵盖不同场景的OAuth 2.0提供程序,以及如何通过关系数据库和Redis使用不同的访问令牌管理策略 (NoSQL数据库)。 本章中的所有食谱都将使用Spring Security OAuth2实现,在撰写本书时,该版本为2.2.0.RELEASE版本(请查看http:/ / projects中有关Spring Security OAuth2的官方文档。 spring.io/spring-security-oauth/docs/oauth2.html)。 由于如今在应用程序之间进行了大量的集成,因此学习如何配置自己的OAuth 2.0提供程序非常重要。 此外,通过阅读本章,您实际上可以通过使用Spring Security OAuth2来应用规范中的所有OAuth 2.0详细信息。

请牢记在生产中使用TLS / SSL,以始终保护客户端和OAuth 2.0提供程序之间的所有传输数据。 本书所有食谱都必须考虑到这一点,因此,在运行生产OAuth 2.0应用程序时,请确保使用TLS / SSL。

使用授权码授予类型保护资源

此食谱向您展示如何配置最著名的OAuth 2.0授权类型,即授权代码授权类型。 在配置由授权服务器和资源服务器组成的OAuth 2.0提供程序之后,通过此配方构建的应用程序将为资源使用提供所有必要的资源所有者的授权(可通过受资源服务器保护的API获得资源)。

做好准备


要运行此食谱,您可以使用首选的IDE,并且必须安装Java 8和Maven。 为了运行示例,我建议您使用命令行工具CURL,或安装允许以直观方式创建HTTP请求的应用程序Postman。 如果要使用Postman,可以从https://www.getpostman.com/下载安装文件。 本食谱将使用Spring Security OAuth2 Framework并尽可能保留它,我们暂时不会添加任何数据库支持。 也就是说,我们将使用内存配置来存储客户端详细信息以及访问令牌。 的源代码这个食谱可以从 https://github.com/PacktPublishing/OAuth-2.0-Cookbook / tree / master / Chapter02 / auth-code-server。

怎么做

以下步骤将指导您使用Spring Security OAuth2配置授权服务器和资源服务器,从而避免您必须从头开始编写OAuth 2.0提供程序(这将非常无用,并且容易出现安全性故障):

将以下注释添加到OAuth2AuthorizationServer类,并扩展来自Spring Security OAuth2项目的AuthorizationServerConfigurerAdapter类:

打开UserController.java类,并在类声明的开头添加@Controller批注,如下所示:
您可能会注意到,Spring为我们提供了一些注释,例如@ Controller,@ Service和@Component。 一些注解(例如@Service和@Component)仅将声明的类定义为Spring托管Bean(由Spring进行管理,允许使用依赖项注入机制)。 @Controller注释是@Component注释的特化,它为可将端点映射到Java源代码的Web控制器添加了语义。

现在,让我们添加相应的方法,该方法将提供受OAuth 2.0保护的端点,如以下代码所示(从包org.springframework.security.core.userdetails导入User类):

端点受OAuth 2.0保护后,让我们通过在com.packt.example.authcodeserver.config包内创建OAuth2AuthorizationServer类来创建OAuth 2.0授权服务器配置。

要配置所有客户端详细信息数据,请覆盖configure方法,该方法允许您自定义ClientDetailsServiceConfigurer实例:

目前,在用户授予许可的情况下,应用程序已准备好开始发布访问令牌。 但是为了允许访问用户的资源(此配方的资源所有者配置文件),我们需要通过在与OAuth2AuthorizationServer相同的程序包中声明OAuth2ResourceServer类来创建资源服务器的配置。

然后,在类级别为OAuth2ResourceServer添加以下注释,如下所示:

为了开始保护用户的配置文件终结点,请在OAuth2ResourceServer类中添加以下配置方法:

该应用程序已准备好通过API的使用发出访问令牌并进行访问令牌验证。

发布了158 篇原创文章 · 获赞 28 · 访问量 33万+

猜你喜欢

转载自blog.csdn.net/wangjunji34478/article/details/105621742