カテゴリ: Spring認証(Spring Security) 更新日: 2026/02/04

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 実装を進めてください。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

GitHub OAuth2とは具体的にどのような仕組みの認証方式なのですか?

GitHub OAuth2とは、ユーザーが普段利用しているGitHubのアカウント情報を活用して、外部のWebアプリケーションに安全にログインできるようにする認証プロトコルです。この方式の最大のメリットは、アプリケーション側でユーザーのパスワードを直接管理・保存する必要がない点にあります。代わりに、GitHubが発行する「アクセストークン」という専用の合言葉のようなものを利用して、ユーザー本人であることを確認し、特定の情報へのアクセスを許可します。Spring Bootで実装する場合も、この仕組みによって高いセキュリティを保ちながら、スムーズなログイン体験を提供することができます。
コメント
コメント投稿は、ログインしてください

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

カテゴリの一覧へ
新着記事
New1
Springの基本
Spring Bootの@ConfigurationPropertiesScanとは?設定クラス自動検出の仕組みを解説
New2
SpringのAPI開発(REST & GraphQL)
Spring Boot GraphQLでResolverを理解しよう!初心者でもわかるデータ取得の基本
New3
SpringのAPI開発(REST & GraphQL)
Spring Boot GraphQL入門!Query・Mutation・Subscriptionの基本を初心者向けに解説
New4
SpringのDB操作
JPQLのパラメータバインド(:name / ?1)の使い方を完全解説!初心者でも迷わない基本の考え方
人気記事
No.1
Java&Spring記事人気No1
Thymeleaf
Thymeleaf とは?初心者向けにThymeleafの基本を徹底解説
No.2
Java&Spring記事人気No2
SpringのWeb開発(Spring MVC)
DispatcherServletの仕組みを理解する!初心者向け完全ガイド
No.3
Java&Spring記事人気No3
Springの基本
Spring Bootのデフォルトログ設定を徹底解説(Logback / SLF4J)
No.4
Java&Spring記事人気No4
SpringのDB操作
JPAの標準クエリメソッド(findById, findAll)を完全解説!初心者でもわかるデータ取得の基本
No.5
Java&Spring記事人気No5
SpringのWeb開発(Spring MVC)
Spring Bootでの@GetMappingと@PostMappingの基本を完全解説!初心者でも理解できる使い方
No.6
Java&Spring記事人気No6
Spring認証(Spring Security)
セッション管理の基本(@SessionAttributes)を完全解説!初心者でもわかるセッションの仕組み
No.7
Java&Spring記事人気No7
SpringのWeb開発(Spring MVC)
@Controller と @RestController の違いを完全解説!初心者向けSpring MVC入門
No.8
Java&Spring記事人気No8
SpringのWeb開発(Spring MVC)
ループ処理(th:each)の基本を完全ガイド!Thymeafの繰り返し処理の使い方