カテゴリ: Spring認証(Spring Security) 更新日: 2025/08/14

GitHub OAuth2の設定方法を完全ガイド!Spring Bootでの導入手順を初心者向けに解説

GitHub OAuth2の設定方法
GitHub OAuth2の設定方法

新人と先輩の会話形式で理解しよう

新人

「先輩、Spring BootでGitHubアカウントを使ってログインするにはどうすればいいんですか?」

先輩

「GitHub OAuth2を使えば、簡単に実装できるよ。今は多くのアプリがSNS認証を取り入れているから、GitHubログインも実践的な機能だね。」

新人

「OAuth2は聞いたことあるんですが、どうやってSpring Bootに組み込むのかがまだよくわかりません……。」

先輩

「それじゃあ、GitHub OAuth2の仕組みから順に解説していこう!」

1. GitHub OAuth2とは?

1. GitHub OAuth2とは?
1. GitHub OAuth2とは?

GitHub OAuth2とは、ユーザーがGitHubアカウントを使って外部のWebアプリケーションに安全にログインできるようにする認証方式です。

アプリケーションがユーザーのIDやパスワードを直接扱わず、代わりにGitHubが発行するアクセストークンを利用して認証処理を行うのが特徴です。

Spring BootでGitHubログインを実装する際も、このOAuth2の仕組みを使うことで、セキュリティの高いログイン機能を実現できます。

ユーザーが/oauth2/authorization/githubにアクセスすると、Spring Securityが自動的にGitHubの認証ページへリダイレクトし、ログイン後にアプリに戻ってきます。

この一連の流れを理解しておくことで、Spring BootにおけるGitHub OAuth2設定がスムーズになります。

2. Spring BootでGitHubログインを実現する流れ

2. Spring BootでGitHubログインを実現する流れ
2. Spring BootでGitHubログインを実現する流れ

Spring Boot GitHub OAuth2 設定では、以下のような手順で実装を進めます。

  1. ① GitHubでOAuthアプリケーションを作成し、client-idclient-secretを取得
  2. ② Spring Bootのプロジェクトに必要な依存関係を追加
  3. application.ymlでGitHubとの接続情報を設定
  4. ④ セキュリティ設定クラスを作成
  5. ⑤ ログインページとログイン後のページを作成
  6. ⑥ 実際にログイン動作を確認

このように、GitHubログイン Spring Boot 実装の流れは明確です。順を追って設定すれば、初心者でも十分に構築可能です。

3. PleiadesでのSpring Bootプロジェクト作成(Gradle構成)

3. PleiadesでのSpring Bootプロジェクト作成(Gradle構成)
3. PleiadesでのSpring Bootプロジェクト作成(Gradle構成)

まずは、Pleiades(日本語化Eclipse)でプロジェクトを作成しましょう。今回はGradleを使って構成します。

Pleiadesを起動したら、以下の手順で進めます。

  • 1. 「ファイル」→「新規」→「Spring スターター・プロジェクト」を選択
  • 2. プロジェクト名を入力(例:github-login-demo)
  • 3. ビルドツールに「Gradle」を選択
  • 4. Javaバージョンは17を選択(またはプロジェクトの要件に合わせる)

次に、必要な依存関係をチェックします。GitHub OAuth2によるログイン機能を作るためには、以下の依存関係を選んでください。

  • Spring Web(@Controllerで画面を表示するため)
  • Spring Security(セキュリティ認証)
  • OAuth2 Client(GitHubログイン処理)
  • Thymeleaf(ログイン画面のテンプレート)

依存関係の設定が終わったら、「完了」ボタンを押してプロジェクトを生成します。プロジェクトが作成されたら、起動して初期状態のSpring Bootアプリケーションを確認しておきましょう。

これで、GitHubログイン Spring Boot プロジェクト構築の第一段階が完了です。次回は、実際にGradle設定やYAMLファイルへのGitHub接続情報の記述を行い、ログイン処理の実装を進めていきます。

4. build.gradleファイルへの依存関係追加

4. build.gradleファイルへの依存関係追加
4. build.gradleファイルへの依存関係追加

Spring BootでGitHub OAuth2を利用するためには、必要な依存関係をbuild.gradleに追加する必要があります。Pleiadesのプロジェクト作成時に依存関係を追加している場合でも、内容を確認しておくことが重要です。

以下は、GitHub OAuth2ログインに必要な主要な依存関係の例です。


dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
}

spring-boot-starter-oauth2-clientはGitHubなどのOAuth2プロバイダーと連携するために不可欠な依存関係です。これがないとSpring SecurityはGitHubの認証を処理できません。

spring-boot-starter-securityは、アプリ全体のセキュリティ機能を提供し、認証と認可の処理を担当します。

spring-boot-starter-webspring-boot-starter-thymeleafは、Webアプリケーションの画面表示とルーティングに必要です。

依存関係を追加後は、PleiadesのGradleタスクから「依存関係のリフレッシュ」を実行して反映してください。

5. application.ymlの設定(GitHubのclient-id・client-secretを含む)

5. application.ymlの設定(GitHubのclient-id・client-secretを含む)
5. application.ymlの設定(GitHubのclient-id・client-secretを含む)

GitHub OAuth2の連携に必要な設定はapplication.ymlに記述します。このファイルはsrc/main/resourcesディレクトリにあります。

GitHubのDeveloper SettingsでOAuthアプリケーションを登録し、client-idclient-secretを取得してください。

取得した情報を使って、以下のようにapplication.ymlを設定します。


spring:
  security:
    oauth2:
      client:
        registration:
          github:
            client-id: YOUR_GITHUB_CLIENT_ID
            client-secret: YOUR_GITHUB_CLIENT_SECRET
            scope:
              - read:user
              - user:email
        provider:
          github:
            authorization-uri: https://github.com/login/oauth/authorize
            token-uri: https://github.com/login/oauth/access_token
            user-info-uri: https://api.github.com/user
            user-name-attribute: login

registration.githubセクションにはGitHubの認証情報とアクセス権限(scope)を設定します。

provider.githubではGitHubのOAuth2エンドポイントURLを指定し、ユーザー名の属性名をloginに設定しています。

この設定により、Spring BootはGitHubのOAuth2認証フローを理解し、ユーザー情報を正しく取得できるようになります。

6. セキュリティ設定(SecurityConfigクラスの作成と解説)

6. セキュリティ設定(SecurityConfigクラスの作成と解説)
6. セキュリティ設定(SecurityConfigクラスの作成と解説)

次に、Spring Securityの設定をカスタマイズするためにSecurityConfigクラスを作成します。ここでURLのアクセス制御やログイン画面の指定を行います。

下記は、@Controllerを使う前提の基本的なセキュリティ設定例です。


package com.example.githublogin.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
public class SecurityConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(authz -> authz
                .requestMatchers("/", "/login", "/css/**", "/js/**").permitAll()
                .anyRequest().authenticated()
            )
            .oauth2Login(oauth2 -> oauth2
                .loginPage("/login")
                .defaultSuccessUrl("/", true)
                .failureUrl("/login?error=true")
            );
        return http.build();
    }
}

authorizeHttpRequestsで、トップページやログインページなどは誰でもアクセスできるようにし、それ以外は認証済みユーザーのみアクセス可能に設定しています。

oauth2Loginでは、カスタムログインページのパスを/loginに設定し、認証成功後は常にトップページ(/)にリダイレクトされるようにしています。

失敗時は/login?error=trueにリダイレクトし、ログイン画面でエラーメッセージを表示できます。

これでGitHub OAuth2 Spring Bootに必要なセキュリティ設定は完了です。次回はログイン画面やホーム画面の作成、実際の動作確認について解説します。

7. ログイン画面とログイン後画面の表示方法(Thymeleaf + @Controller)

7. ログイン画面とログイン後画面の表示方法(Thymeleaf + @Controller)
7. ログイン画面とログイン後画面の表示方法(Thymeleaf + @Controller)

GitHub OAuth2でのログイン機能を実装した後は、ユーザーが操作するログイン画面やログイン後のホーム画面を用意する必要があります。ここでは、Thymeleafを使ったテンプレートと、@Controllerを利用したコントローラの実装例を紹介します。

まずはログイン画面です。src/main/resources/templates/login.htmlに以下の内容を作成してください。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8" />
    <title>ログインページ</title>
</head>
<body>
    <h1>GitHubログイン</h1>
    <div th:if="${param.error}">
        <p style="color:red;">ログインに失敗しました。もう一度お試しください。</p>
    </div>
    <a href="/oauth2/authorization/github">GitHubでログイン</a>
</body>
</html>

ログイン画面にはGitHubログインのリンクだけを設置しています。/oauth2/authorization/githubのURLがSpring Securityの認証開始ポイントです。

次に、ログイン成功後に表示するトップページ(ホーム画面)を用意します。src/main/resources/templates/index.htmlに以下のように記述します。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8" />
    <title>ホームページ</title>
</head>
<body>
    <h1>ようこそ、<span th:text="${userName}">ユーザー</span>さん!</h1>
    <p><a href="/logout">ログアウト</a></p>
</body>
</html>

このページでは、ログインユーザーのGitHubのユーザー名を表示しています。userNameはコントローラでモデルに設定します。

次に、コントローラの実装例を示します。src/main/java/com/example/githublogin/controller/LoginController.javaに以下のコードを作成してください。


package com.example.githublogin.controller;

import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class LoginController {

    @GetMapping("/")
    public String index(@AuthenticationPrincipal OAuth2User principal, Model model) {
        if (principal != null) {
            model.addAttribute("userName", principal.getAttribute("login"));
        } else {
            model.addAttribute("userName", "ゲスト");
        }
        return "index";
    }

    @GetMapping("/login")
    public String login() {
        return "login";
    }
}

このコントローラでは、トップページで認証済みのユーザー情報を取得し、GitHubのユーザー名を表示しています。ログイン画面はシンプルにlogin.htmlを返すだけです。

これでSpring Boot GitHubログイン 画面遷移の基本的な流れが完成します。

8. 認証成功・失敗時のリダイレクト処理

8. 認証成功・失敗時のリダイレクト処理
8. 認証成功・失敗時のリダイレクト処理

Spring SecurityのSecurityConfigで設定したリダイレクトURLにより、認証成功時と失敗時の動作が制御されています。ここで再度詳しく説明します。

認証成功時には以下の設定により、常にトップページにリダイレクトされます。


.oauth2Login(oauth2 -> oauth2
    .loginPage("/login")
    .defaultSuccessUrl("/", true)
    .failureUrl("/login?error=true")
);

defaultSuccessUrl("/", true)は、認証成功後に必ずトップページにリダイレクトする設定です。これによりログイン後は自動的にホーム画面に遷移します。

failureUrl("/login?error=true")は認証失敗時のリダイレクト先です。ログイン画面に戻り、エラーメッセージを表示できます。

実際の画面では、先ほどのlogin.htmlth:if="${param.error}"が有効になり、エラーをユーザーに知らせます。

こうしたリダイレクトの仕組みは、GitHub OAuth2 Spring Boot 実装においてユーザー体験を向上させる重要なポイントです。

9. 実際にPleiadesでアプリを起動してGitHubログイン動作を確認する方法

9. 実際にPleiadesでアプリを起動してGitHubログイン動作を確認する方法
9. 実際にPleiadesでアプリを起動してGitHubログイン動作を確認する方法

最後に、Pleiades環境で作成したSpring Bootアプリケーションを起動し、GitHubログインが正常に動作するか確認する方法を紹介します。

まず、Pleiadesのプロジェクトエクスプローラーで作成したプロジェクトを右クリックし、「Spring Bootアプリケーションとして実行」を選択します。

コンソールに「Started Application」と表示されれば起動成功です。

ブラウザでhttp://localhost:8080/loginにアクセスしてください。GitHubログインのリンクが表示されているはずです。

リンクをクリックするとGitHubの認証画面にリダイレクトされます。GitHubのアカウント情報を入力し、認証を許可してください。

認証に成功すると、自動的にトップページにリダイレクトされ、GitHubのユーザー名が表示されます。

もしログインに失敗した場合は、ログイン画面に戻り、赤いエラーメッセージが表示されます。エラーが出る場合は、application.ymlの設定やGitHubのクライアントID・シークレットを再確認してください。

これで、Spring Boot GitHubログイン 動作確認は完了です。ユーザーが安全にGitHubアカウントで認証できるWebアプリケーションの完成です。

以上の手順を参考に、GitHub OAuth2 Spring Boot 実装を進めてください。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
Spring認証(Spring Security)
Spring BootでCORSを設定する方法を完全解説!初心者でもわかるセキュリティ対策
New2
Spring認証(Spring Security)
パスワードをハッシュ化する理由とは?セキュリティ対策の基本をSpring Securityで学ぼう
New3
SpringのWeb開発(Spring MVC)
HTTPリクエストとレスポンスの基本を完全解説!Spring MVC初心者がWeb通信の仕組みをやさしく理解
New4
Spring認証(Spring Security)
ブラウザからのフォーム送信とは?HTTPリクエストの基礎を初心者向けに解説!
人気記事
No.1
Java&Spring記事人気No1
SpringのWeb開発(Spring MVC)
ルーティングとは?基本概念(Spring MVCのURL制御を理解)
No.2
Java&Spring記事人気No2
Thymeleaf
Thymeleaf とは?初心者向けにThymeleafの基本を徹底解説
No.3
Java&Spring記事人気No3
Springの基本
application.properties と YAML の基本をやさしく解説!初心者向けSpring Boot設定ファイル入門
No.4
Java&Spring記事人気No4
Springの基本
Spring Bootのデフォルトログ設定を徹底解説(Logback / SLF4J)
No.5
Java&Spring記事人気No5
Springの基本
Spring Bootの環境変数の設定方法をやさしく解説!初心者向けapplication.propertiesの使い方
No.6
Java&Spring記事人気No6
SpringのWeb開発(Spring MVC)
ループ処理(th:each)の基本を完全ガイド!Thymeafの繰り返し処理の使い方
No.7
Java&Spring記事人気No7
SpringのDB操作
JPAの標準クエリメソッド(findById, findAll)を完全解説!初心者でもわかるデータ取得の基本
No.8
Java&Spring記事人気No8
Spring認証(Spring Security)
セッション管理の基本(@SessionAttributes)を完全解説!初心者でもわかるセッションの仕組み