Spring Security——OAuth 2.0登录——Google,GitHub,Facebook和Okta

何和惬
2023-12-01

基本概念

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中指定的授权代码授予来实现的。

官方文档

https://docs.spring.io/spring-security/site/docs/5.2.3.RELEASE/reference/html5/#oauth2login-sample-boot-application 

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-idclient-secret属性中的值替换为您之前创建的OAuth 2.0凭据。

启动应用程序

启动Spring Boot 2.x示例并转到http://localhost:8080。然后,您将被重定向到默认的自动生成的登录页面,该页面显示Google的链接。

单击Google链接,然后您将重定向到Google进行身份验证。

在使用您的Google帐户凭据进行身份验证后,下一页是“同意”屏幕。“同意”屏幕要求您允许或拒绝访问您之前创建的OAuth客户端。点击允许以授权OAuth客户端访问您的电子邮件地址和基本个人资料信息。

此时,OAuth客户端将从UserInfo端点检索您的电子邮件地址和基本个人资料信息,并建立经过身份验证的会话。

参考文章

 

 类似资料: