使用社交登錄進行身份驗證(Spring Authorization Server)

Spring Security
Remote
0
12:33 PM · Nov 30 ,2025

1. 簡介

在本教程中,我們將演示如何設置 Web 應用程序的後端,該應用程序使用 Spring 的社交登錄功能。 我們將使用 Spring Boot 和 OAuth2.0 依賴項。 我們還將使用 Google 作為社交登錄提供商。

2. 註冊與社交登錄提供商

2.1. 同意屏幕配置

在我們開始項目設置之前,我們需要從社交登錄提供商處獲取 ID 和密鑰。考慮到我們正在使用 Google 作為提供商,讓我們前往他們的 API 控制枱 以開始該過程。

一旦我們到達 Google API 控制枱,我們需要創建一個新項目。選擇一個合適的項目名稱後,我們將開始獲取憑據的過程:

Google API 控制枱 Google 控制枱新項目詳情

接下來,我們需要設置 OAuth 同意屏幕。為此,我們需要選擇以下選項:

配置同意屏幕

此操作會顯示一個新頁面,其中包含更多選項:

配置同意屏幕 2

在這裏,我們將選擇“外部”選項,以便任何擁有 Google 帳户的人都可以使用我們的應用程序進行登錄。然後,我們將點擊“創建”按鈕。

下一頁,“應用註冊編輯”要求我們提供有關我們的應用程序的一些信息。在右側菜單中,我們可以看到“應用名稱”將被使用的一些示例。

在這裏,我們想使用我們業務的名稱。此外,我們可以添加我們業務的標誌,該標誌在示例中用於説明。最後,我們需要添加“用户支持電子郵件”。此聯繫人是那些想了解更多關於其同意信息的人會聯繫的人:

OAuth 同意屏幕應用詳情

在我們繼續之前,我們需要在屏幕底部添加一個電子郵件地址。此聯繫人將從 Google 處接收有關創建項目更改的通知(此處未説明)。

為了演示目的,我們將留白以下字段:

應用域名信息

此外,我們將繼續完成下一步,而無需填寫其他內容。

在我們配置“OAuth 同意屏幕”之後,我們可以繼續設置憑據。

2.2. 憑據設置 – 密鑰和秘密

為此,我們需要選擇“憑據”選項(箭頭 1)。一個新菜單出現在頁面的中間。在它上面,我們需要選擇“創建憑據”選項(箭頭 2)。從下拉列表中,我們需要選擇“OAuth 客户端 ID”選項(箭頭 3):

憑據設置 1

接下來,我們將選擇“Web 應用程序”選項。這是我們用於演示的內容:

憑據設置 2

在選擇之後,將在頁面上出現更多元素。我們需要為我們的應用程序命名。在這種情況下,我們將使用“Spring-Social-Login”。然後,我們將提供 URL。在這種情況下,我們將使用 http://localhost:8080/login/oauth2/code/google

憑據設置 3

在我們填寫這些字段後,我們將導航到頁面的底部並點擊“創建”按鈕。會出現一個彈出窗口,其中包含密鑰和秘密。我們可以下載 JSON 或將其存儲在本地:

憑據設置 4

我們完成了 Google 的設置。如果我們想使用其他提供商,例如 GitHub,我們需要遵循類似的過程。

3. Spring Boot 項目設置現在,在我們添加社交登錄功能之前,我們來設置項目。 。 我們將前往 Spring Initializr 並設置一個新的 Maven 項目。 我們將保持簡單,我們將使用 Spring Web 和 OAuth2 依賴項:

Project setup 1

在我們的最愛 IDE 中打開項目並啓動它後,主頁應該如下所示:

Project setup 2

這是 Spring Security 的默認登錄頁面。 我們將在此處添加社交登錄功能。

4. 社交登錄實現

首先,我們將創建一個名為 HomeController 的類,該類將包含兩個路由,一個公共的,一個私有的:

@GetMapping("/")
public String home() {
    return "Hello, public user!";
}

@GetMapping("/secure")
public String secured() {
    return "Hello, logged in user!";
}

接下來,我們需要覆蓋默認的安全配置。為此,我們需要一個新的類 SecurityConfig,該類將被註解為 @Configuration@EnableWebSecurity。在配置類中,我們將配置安全過濾器。

此安全過濾器允許任何人訪問主頁 (auth.requestMatchers(“/”).permitAll()),並且任何其他請求都需要進行身份驗證:

@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        return http
          .authorizeHttpRequests(auth -> {
              auth.requestMatchers("/").permitAll();
              auth.anyRequest().authenticated();
          })
          .oauth2Login(Customizer.withDefaults())
          .formLogin(Customizer.withDefaults())
          .build();
    }
}

此外,我們使用 formLogin 進行用户和密碼身份驗證,並使用 oauth2Login 進行社交媒體登錄功能。

接下來,我們需要在 applications.properties 文件中添加 ID 和密鑰:

spring.security.oauth2.client.registration.google.client-id = REPLACE_ME
spring.security.oauth2.client.registration.google.client-secret = REPLACE_ME

並且這就是全部。在我們啓動應用程序後,主頁會不同。默認情況下,它將顯示我們在公共端點中配置的消息。當我們嘗試訪問 /secure 端點時,我們將被重定向到登錄頁面,該頁面看起來如下所示:

Project setup 3

點擊 Google 會將我們重定向到 Google 登錄頁面:

Project setup 4

成功登錄後,我們將被重定向到我們之前設置的 /secure 端點,並且相應的消息將被顯示。

5. 結論

在本文中,我們演示瞭如何使用 OAuth2 社交登錄功能設置 Spring Boot Maven 項目。

我們使用 Google API 控制枱實現了此功能。首先,我們設置了 Google 項目和應用程序。然後,我們獲取了憑據。之後,我們設置了項目,最後,我們設置了安全配置,使社交登錄可用。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.