在本指南中,我们将学习如何使用Oauth2保护Spring Boot应用程序。本教程适用于有使用Spring框架开发Web应用经验并对Oauth2有基本了解的开发者。
使用的技术
本指南中使用的技术是。
- Spring Boot
- Oauth2
- MongoDB
- 梯形图(Gradle
依赖关系
以下是所需的依赖性列表。
授权服务器
让我们来配置一下授权服务器。让我们把_rokin-client_注册为一个客户端_。_ 我们将使用内存中的令牌存储。
这里,allowFormAuthenticationForClients()方法用于使用表单参数而不是基本认证来验证客户端。
资源服务器
安全配置
这里,我们将使用BCryptPasswordEncoder来加密用户的密码。_密码授予类型_需要AuthenticationManagerBean。
用户细节配置
现在我们已经配置了安全设置、授权服务器和资源服务器,让我们深入到用户配置中。我们将使用MongoDB来存储用户详细信息。让我们从创建一个用户实体开始。
现在,我们将创建一个用户存储库来对_用户_集合进行数据库查询。我们将使用Spring Data MongoDB来实现这一目的。
为了让Spring Data MongoDB工作,我们需要在application.properties文件中指定数据库名称、主机、端口、用户名和密码。
为了验证用于登录的凭证是否正确,我们需要创建一个CustomUserDetailsService类,它实现了org.springframework.security.core.userdetails.UserDetailsService。在这个类中,我们将从数据库中获取用户并将其映射到org.springframework.security.core.userdetails.User。
现在我们所有的配置都完成了,让我们在应用程序启动时在数据库中插入一个用户。这一点很重要,因为如果数据库中没有用户,我们就不能使用密码授权生成访问令牌。
令牌端点
访问和刷新令牌
要获得访问和刷新令牌,首先,在授权头中用你的_客户ID_和_客户秘密_更新你的请求。
然后,在你的正文中设置 grant_type为 密码并提供你的 用户名和 密码.
使用密码授予的访问和刷新令牌
从刷新令牌中获取访问令牌
就像获得访问令牌一样,首先,在授权头中用你的客户ID和客户秘密更新你的请求。然后,在你的正文中设置 grant_type为 刷新令牌 ,并提供 Refresh_token.
使用 refresh_token 授予访问和刷新令牌
如果你想查看github上的完整项目,请访问github.com/rokinmaharj…。
本指南就到此为止。如果你喜欢它,别忘了拍手。)