基本概念
OAuth 2.0登录:OAuth 2.0登录功能为应用程序提供了使用户能够通过使用其在OAuth 2.0提供程序(例如GitHub)或OpenID Connect 1.0提供程序(例如Google)上的现有帐户登录该应用程序的功能。
OAuth 2.0登录是通过使用OAuth 2.0授权框架和OpenID Connect Core 1.0中指定的授权代码授予来实现的。
官方文档
Maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
DEMO
Spring Boot 2.x为OAuth 2.0登录带来了完整的自动配置功能。
最初设定
要使用Google的OAuth 2.0身份验证系统进行登录,您必须在Google API控制台中设置一个项目以获得OAuth 2.0凭据。
Google的OAuth 2.0身份验证实现符合OpenID Connect 1.0规范,并且已通过OpenID认证。
请按照“设置OAuth 2.0”部分开始的OpenID Connect页面上的说明进行操作。
完成“获取OAuth 2.0凭据”说明后,您应该拥有一个新的OAuth客户端,其凭据由客户端ID和客户端密钥组成。
设置重定向URI
重定向URI是最终用户的用户代理在通过Google身份验证并授予对“同意”页面上的OAuth客户端(在上一步中创建)的访问权限后,将重定向到应用程序中的路径。
在“设置重定向URI”子部分中,确保将“ 授权重定向URI”字段设置为http://localhost:8080/login/oauth2/code/google
。
默认重定向URI模板为
{baseUrl}/login/oauth2/code/{registrationId}
。该registrationId是用于唯一标识符ClientRegistration。
如果OAuth客户端在代理服务器后面运行,建议检查“ 代理服务器配置”以确保正确配置了应用程序。此外,请参阅支持
URI
模板变量的redirect-uri
。
配置application.yml
现在,您有了Google的新OAuth客户端,您需要配置应用程序以将OAuth客户端用于身份验证流程。为此:
转到application.yml
并设置以下配置:
spring:
security:
oauth2:
client:
registration:
google:
client-id: google-client-id
client-secret: google-client-secret
OAuth2客户端属性
spring.security.oauth2.client.registration
是OAuth客户端属性的基本属性前缀。基本属性前缀后面是ClientRegistration的ID ,例如google。
将client-id
和client-secret
属性中的值替换为您之前创建的OAuth 2.0凭据。
启动应用程序
启动Spring Boot 2.x示例并转到http://localhost:8080
。然后,您将被重定向到默认的自动生成的登录页面,该页面显示Google的链接。
单击Google链接,然后您将重定向到Google进行身份验证。
在使用您的Google帐户凭据进行身份验证后,下一页是“同意”屏幕。“同意”屏幕要求您允许或拒绝访问您之前创建的OAuth客户端。点击允许以授权OAuth客户端访问您的电子邮件地址和基本个人资料信息。
此时,OAuth客户端将从UserInfo端点检索您的电子邮件地址和基本个人资料信息,并建立经过身份验证的会话。
参考文章