Spring Boot 3のREST API認証を実務で学ぶ本3選

PR:この記事にはアフィリエイトリンクが含まれます。

Spring Boot 3でREST APIを作るなら、認証は後付けしづらい部分です。利用者を見分ける認証と操作を許可する認可を分けて考えると、設定もテストも見通しやすくなります。

JWTを採用しただけで安全になるわけではありません。有効期限や権限の範囲に加え、鍵の更新とブラウザーでの送信方法を決めてから各APIを保護します。

書籍扱う範囲実務で役立つ場面
Spring Boot 3 プログラミング入門Spring Boot 3 プログラミング入門Boot 3、DB、JAX-RSによるREST API日本語で開発の基礎をつかむ
Modern API Development with Spring 6 and Spring Boot 3: Design scalable, viable, and reactive APIs with REST, gRPC, and GraphQL using Java 17 and Spring Boot 3Modern API Development with Spring 6 and Spring Boot 3: Design scalable, viable, and reactive APIs with REST, gRPC, and GraphQL using Java 17 and Spring Boot 3REST、gRPC、GraphQL、JWT、テストAPI設計と認証をまとめて学ぶ
Spring Security in Action, Second EditionSpring Security in Action, Second Edition認証・認可、OAuth 2、OpenID Connect、テストSpring Securityを深く学ぶ

「Spring Boot 3 プログラミング入門」は希望小売価格3,300円(税込)です。実売価格は時期や販売店で変わります。内容の範囲もあわせて見ておきたいですね。

認証の土台

spring-boot-starter-securityを追加すると、Spring Securityの標準設定が有効になり、未認証リクエストは保護されます。とはいえ起動時の状態を本番設定とみなさず、公開するルートを明示してください。

認証は利用者やサービスの身元を確かめ、認可はその主体に操作を許可します。ログインに成功した利用者へ全APIの権限を渡す設計では、閲覧範囲を制御できません。

パスワードは平文や単純なハッシュ値で保存せず、Spring SecurityのPasswordEncoderを使います。BCryptなど計算コストを調整できる方式を選び、登録時とログイン時に同じ規則で検証してください。

APIを呼ぶ主体も早めに整理しましょう。自社のWeb画面から呼ぶか、スマホアプリや別の業務サービスから呼ぶかで、トークンの渡し方と失効要件は変わります。同じ設定を一律に当てはめると、あとで運用に手間がかかります。

JWTと鍵管理

JWTには有効期限と発行者、対象者やスコープなどを含めます。APIは署名に加えて発行者と有効期間を確認し、audienceも検証します。

Spring Bootでissuer-uriを設定すると、認可サーバーの情報を基に公開鍵を取得できます。鍵をアプリに固定で埋め込む手間を減らし、複数APIで検証に使う鍵の入れ替えにも追従しやすくなります。

署名が正しくても、権限が広すぎれば安全とはいえません。トークンに含めるscopeは必要分に絞り、認可に不要な住所やメールアドレスを載せないことで、漏えい時に見える情報を抑えられます。

JWTはサーバー側に状態を持たず検証できる半面、発行後にすぐ失効させにくい方式です。アクセストークンは短い期限に設定し、更新用トークンの保管と失効は認可サーバーに任せて漏えい時の影響を抑えます。

権限と応答

URL単位の認可にはrequestMatchersを使い、公開APIとログイン必須API、管理者向けAPIを区別します。Resource ServerではscopeがSCOPE_付きの権限になるため、設定名をトークンのscopeに合わせてください。

データの所有者を確認する処理は、URLルールだけでは守りきれません。@EnableMethodSecurityを有効にし、サービスメソッドに@PreAuthorizeを付けて本人や担当部署を確認すれば、別経路からの呼び出しにも認可が適用されます。

認証情報がないか無効なら401、認証済みで権限が不足する場合は403です。この違いをAPI仕様に反映し、エラー本文から内部クラス名やトークン検証の詳細を外します。

ログイン失敗を細かく説明すると、登録済み利用者かどうかを推測されるおそれがあります。画面には共通エラーを返し、調査用の詳細はアクセス制限したサーバーログに残すと両立しやすくなります。

ブラウザー境界

CORSはブラウザーが別オリジンへのリクエストを許すか決める仕組みです。認証の代わりではありません。許可するオリジンは必要なフロントエンドに絞り、APIの認可範囲は別のルールで管理しましょう。

Cookieで認証する場合、ブラウザーがリクエストへCookieを自動添付するため、CSRF対策が必要です。SameSite属性だけに頼らず、Spring SecurityのCSRFトークンを使う流れも確認してください。Cookie認証では見逃せない点ですね。

AuthorizationヘッダーでBearerトークンを明示して送るAPIでは、Cookie認証とはCSRFの条件が異なります。ただし、トークンをCookieへ移せば前提も変わります。保存場所と送信方法を一組で設計しましょう。

資格情報を含むリクエストを許可するなら、オリジンを限定します。ワイルドカードのままにせずフロントエンドのURLを指定し、認証情報が意図した場所から届く状態にしましょう。

テストと運用

認証設定のテストでは正常系だけでは足りません。未認証、権限不足、必要なscopeを持つ利用者で同じエンドポイントを呼び、401と403の境目を確かめます。拒否されるべきリクエストが通らないことも大切です。

MockMvcを使うなら、Spring Securityのテスト支援で認証済みユーザーやJWTを設定できます。スタブJWTで認可ルールを確かめるテストと、発行者や署名検証の設定を確認するテストは目的が異なります。この二つを分けると結果を読み取りやすくなります。

本番ログには認証失敗や権限拒否を記録し、調査に使えるリクエストIDを付けます。パスワードやAuthorizationヘッダー、更新用トークンはログに記録しません。監査には主体IDと操作名など、必要な項目を選んで残してください。

認証まわりの変更は、鍵の切り替えや期限切れへの対応まで運用手順に含めます。開発環境で通るだけでは不十分です。鍵を取得できない障害時にもAPIが安全に失敗するか、公開前に確かめましょう。

書籍で補う

「Spring Boot 3 プログラミング入門」はSpring Boot 3、Spring Framework 6、JDK 17をハンズオン形式で学べる日本語の入門書です。インストールからDB連携へ進み、JAX-RSのREST APIとReactアプリの連携も扱います。認証実装の前にBoot 3開発とDBの基本を学ぶ目的に合います。

Spring Boot 3 プログラミング入門

Spring Boot 3 プログラミング入門

秀和システム

Amazonで見る

Packtの「Modern API Development with Spring 6 and Spring Boot 3」は英語の第2版で494ページです。RESTとgRPC、GraphQLに加えてAPI仕様、Repository・Service構成、テストを扱います。Spring SecurityとJWTによるAPI保護、CORS・CSRF、セキュリティテストも対象です。

Modern API Development with Spring 6 and Spring Boot 3: Design scalable, viable, and reactive APIs with REST, gRPC, and GraphQL using Java 17 and Spring Boot 3

Modern API Development with Spring 6 and Spring Boot 3: Design scalable, viable, and reactive APIs with REST, gRPC, and GraphQL using Java 17 and Spring Boot 3

Packt

Amazonで見る

「Spring Security in Action, Second Edition」は英語の440ページで、Spring Boot 3向けに更新された専門書です。ユーザーとパスワードに加えて、エンドポイント単位・メソッド単位の認可も解説します。OAuth 2やOpenID Connect、CORS・CSRF、セキュリティ設定のテストも扱います。

Spring Security in Action, Second Edition

Spring Security in Action, Second Edition

Manning Publications

Amazonで見る

結論

REST API認証を主題に一冊買うなら、「Spring Security in Action, Second Edition」を最初に選んでください。Boot 3向けの専門書で、OAuth 2とOpenID Connect、認可とテストまで学べます。

英語の専門書に進む前にBoot 3やDBの基本を固めたい人には、「Spring Boot 3 プログラミング入門」がおすすめです。認証専門書ではありませんが、Boot 3とDB、REST API開発の基本を学べます。

API設計とREST、gRPC、GraphQLをまとめて学ぶなら、Packtの第2版がおすすめです。認証方式と権限をAPIごとに定め、鍵の運用やテストまで実装に反映してください。

【2026年版】Amazonで買えるおすすめノートPCランキング!コスパ最強のモデルはこれだ
DELLのノートパソコンがテーブルの上に置いてある画像

Amazon の PC をスコア化してみた

Specsy Hub

Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。

タイトルとURLをコピーしました