知識庫 / Spring / Spring Security RSS 訂閱

使用社交登錄認證 Spring 授權服務器

Spring Security
HongKong
5
11:14 AM · Dec 06 ,2025

1. 簡介

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

2. 使用社交登錄提供商註冊

2.1. OAuth 授權屏幕配置

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

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

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

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

在此,我們希望使用我們業務的名稱。此外,我們可以添加我們業務的標誌,該標誌在示例中得到使用。最後,我們需要添加“用户支持電子郵件”。這是人們想要了解其同意情況時會聯繫的聯繫人:

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

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

此外,我們將繼續進行下一步,而無需填寫任何其他內容。

在完成“OAuth 授權屏幕”配置後,我們就可以繼續進行憑據設置。

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

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

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

選擇此選項後,頁面上會顯示更多元素。 我們需要為應用程序命名。 在這種情況下,我們將使用“Spring-Social-Login”; 接下來,我們將提供 URL。 在這種情況下,我們將使用 http://localhost:8080/login/oauth2/code/google

填寫完這些字段後,請導航到頁面底部並單擊“創建”按鈕。 將出現一個彈出窗口,其中包含密鑰和機密。 您可以下載 JSON 文件或將其保存在本地:

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

3. Spring Boot 項目設置

現在,在我們添加社交登錄功能之前,讓我們設置項目。正如前面提到的,我們正在使用 Spring Boot。讓我們轉到 Spring Initializr 並設置一個新的 Maven 項目。我們將保持簡單,使用 Spring Web 和 OAuth2 依賴項:

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

這是 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 端點時,我們將被重定向到登錄頁面,頁面如下所示:

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

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

5. 結論

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

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

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

發佈 評論

Some HTML is okay.