[译]OAuth2 with Spring 第2部分:授权服务器入门
Spring 团队最近发布了他们的授权服务器。OAuth2 一直是一个热门话题,而构建或理解授权服务器一直是一个谜。在本系列的第 1 部分中,我描述了几乎所有您需要了解的有关 OAuth2 的概念性内容。在本系列的这篇文章中,我将尝试演示如何构建具有client_credential授权类型的授权服务器。我将从使用配置属性进行自动配置开始解释它们,并通过编写 Java 代码自定义配置。让我们开始吧。
设置授权服务器
让我们转到Spring Initializr并生成项目。
为了创建授权服务器,我们需要 Oauth2 授权服务器依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-authorization-server</artifactId>
</dependency>
生成项目并导入到您最喜欢的 IDE。
现在让我们在application.yml中添加我们想要的配置。
在第 1 部分中,我们了解到我们需要一个客户端来从授权服务器获取令牌。因此,我们需要授权服务器有一些客户端信息。在 application.yml 中,我将放置获取令牌和其他授权信息所需的最少客户端信息。
spring:
security:
oauth2:
authorization-server:
client:
client-1:
registration:
client-id: client
client-secret: "{noop}secret"
client-authentication-methods: client_secret_basic
authorization-grant-types: client_credentials
根据上面的配置属性,我们注册了一个客户端client-1。
对于client-1,我们定义了 4 个属性:
- clientId
- client-secret
- client-authentication-methods:本例中为基本身份验证 client_secret_basic
- authorization-grant-types:用于请求新令牌的授予类型。在本例中为 client_credentials
现在,我们必须启动授权服务器应用程序。
接下来,在 postman 中,我们向*/oauth2/token端点发出 POST 请求以获取令牌。为什么是/oauth2/token*端点?
我们可以看到,一旦我们提交请求,我们就会收到详细的令牌信息。
瞧,我们最小的授权服务器现在已经启动并运行了。
该项目的链接可以在这里找到。
问题
1. 我们在哪里找到默认令牌端点?
答:在 OAuth2 的 RFC 中,它提到默认令牌端点应该是*/token*。但是,很难找到 Spring Boot 授权服务器的默认令牌端点。我不得不浏览源代码。在类OAuth2TokenEndpointFilter中,提到了默认令牌端点。
感谢您的耐心阅读。在下一篇文章中,我们将尝试创建一个资源服务器,使用authorization_code授权获取令牌以访问一些私人数据。
Related content
- Spring Boot Tutorials
- [译]Spring Security 和 JWT 入门
- [译]测试 Spring Boot 应用程序:最佳实践和框架
- Spring Boot集成SpringDoc生成Api文档
- Spring Boot项目创建Docker镜像并运行应用
- [译]OAuth2 with Spring 第1部分:了解基本概念
- [译]OAuth2 with Spring 第3部分:使用Spring授权服务器授予authorization_code OIDC客户端
- [译]OAuth2 with Spring 第4部分:Spring授权客户端与Google授权服务器的社交登录演示
- [译]OAuth2 with Spring 第5部分:使用PKCE保护您的Spring Boot应用程序以增强安全性
- [译]使用 Spring Boot 构建 RESTful API:集成 DDD 和六边形架构