OpenID Connect入門 ―⁠―アプリケーション開発者のための実践技術解説

「OpenID Connect入門」のカバー画像
著者
土岐孝平ときこうへい 著
倉林雅くらはやしまさる 監修
定価
3,300円(本体3,000円+税10%)
発売日
2026.2.24
判型
A5
頁数
272ページ
ISBN
978-4-297-15456-1 978-4-297-15457-8

概要

昨今のアプリケーションの開発では、OpenID Connectを使用してユーザ認証を行うケースが多くなっています。しかし、OpenID Connectについてよく知らずに使用している開発者も多いのではないのでしょうか? きちんと理解しないままOpenID Connectを使用すると、上手く動かないときの調査に時間がかかったり、重大なセキュリティホールを潜ませてしまうリスクにつながります。 OpenID Connectをよく知らない開発者が多い理由として、その難しさがあります。筆者自身、OpenID Connectを理解するのに多くの時間を要しました。概念的な難しさに加え、数多くの用語が登場して複雑に関係しています。また、きちんと理解するにはOpenID Connectの仕様書を参照する必要がありますが、説明が機械的で学習向きとは言えません。 本書は、OpenID Connectの知識がほとんどない方でも、OpenID Connectを理解してもらえるような内容です。OpenID Connectが登場した背景から始まり、各種フローを丁寧に説明します。代表的なセキュリティの脆弱性や対応方法についても説明します。また、サンプルアプリケーションを通して実装のイメージを伝えつつ、具体的にやりとりされるデータを示しながら説明します。 本書を読むことで、OpenID Connectを使用したアプリケーション開発に従事するための十分な知識を得ることができます。

こんな方にオススメ

  • OpenID Connectを利用してアプリケーションへの実装を考えているプログラマー、エンジニア、セキュリティ担当者など
  • もしくはアプリケーションのセキュリティチェックをしている方など

目次

第1章 OpenID Connectの概要

1.1 身近な存在のOpenID Connect

1.2 OAuth 2.0について

  • 1.2.1 OAuth 2.0の認可
  • 1.2.2 外部アプリケーションへのアクセス

1.3 ユーザー認証としてのOAuth 2.0

1.4 OpenID Connectによる拡張

1.5 本書でのOAuth 2.0の扱い

1.6 OIDCで登場する役割

  • 1.6.1 ユーザー
  • 1.6.2 IdP(Identity Provider)
  • 1.6.3 Client
  • 1.6.4 Resource Server

1.7 Clientの形態

  • 1.7.1 MPAのClient
  • 1.7.2 SPAのClient
  • 1.7.3 BFFのClient
  • 1.7.4 ネイティブアプリのClient
  • 1.7.5 ユーザーが関与しないClient

1.8 「コンフィデンシャル」と「パブリック」

1.9 IdPの調達

1.10 「1st Party Client」と「3rd Party Client

1.11 まとめ

第2章 OIDCの利用シーン

2.1 業務向けのアプリケーションでの利用シーン

  • 2.1.1 複数の社内アプリケーションを同じユーザー情報・クレデンシャルで利用したい(シングルサインオン)
  • 2.1.2 認証機能を自前で実装したくない
  • 2.1.3 アプリケーション間で安全にAPIを呼び出したい

2.2 コンシューマ向けのアプリケーションでの利用シーン

  • 2.2.1 SNSに認証を任せたい
  • 2.2.2 SNSのコンテンツを利用したい
  • 2.3 まとめ

第3章 エンドポイントとフローの種類

3.1 エンドポイントの種類

  • 3.1.1 認可エンドポイント
  • 3.1.2 リダイレクションエンドポイント
  • 3.1.3 トークンエンドポイント

3.2 フローの種類

3.3 認可コードフロー

  • 3.3.1 ClientがMPAの認可コードフロー
  • 3.3.2 ClientがSPAの認可コードフロー
  • 3.3.3 ClientがBFFの認可コードフロー
  • 3.3.4 Clientがネイティブアプリの認可コードフロー

3.4 インプリシットフロー

3.5 ハイブリッドフロー

3.6 クライアントクレデンシャルフロー

3.7 リソースオーナーパスワードクレデンシャルフロー

3.8 フローの使い分け

3.9 まとめ

第4章 トークンの種類と形式

4.1 トークンの種類

4.2 アクセストークン.

  • 4.2.1 オパークトークン
  • 4.2.2 JWT
  • 4.2.3 オパークトークンとJWTの比較

4.3 IDトークン

4.4 リフレッシュトークン

4.5 まとめ

第5章 認可コードフローの詳細

5.1 認可コードフローの全体像

5.2 認可リクエスト

  • 5.2.1 Scopeパラメータ
  • 5.2.2 response_typeパラメータ
  • 5.2.3 client_idパラメータ
  • 5.2.4 redirect_uriパラメータ
  • 5.2.5 stateパラメータ
  • 5.2.6 nonceパラメータ
  • 5.2.7 code_challenge、およびcode_challenge_method.パラメータ

5.3 認可レスポンス

5.4 リダイレクションエンドポイントへのリクエスト

5.5 トークンリクエスト

5.6 トークンレスポンス

5.7 PKCEとは

5.8 まとめ

第6章 アクセストークン取得後に行われる処理

6.1 (Client側) Resource Serverへのアクセス

6.2 (Resource Server側)アクセストークンの正当性の検証

  • 6.2.1 電子署名を使用する方法
  • 6.2.2 IdPに都度問い合わせる方法

6.3 (Client側)アクセストークンのリフレッシュ(再発行)

  • 6.3.1 リフレッシュリクエスト
  • 6.3.2 リフレッシュレスポンス
  • 6.3.3 リフレッシュトークンのローテーション

6.4 (Client、およびResource Server側)ユーザー情報の取得

  • 6.4.1 ユーザー情報リクエスト
  • 6.4.2 ユーザー情報レスポンス

6.5 まとめ

第7章 ログアウトの方法

7.1 どこからログアウトするのか

7.2 OpenID Connect RP Initiated Logout

7.3 シングルログアウト

7.4 OpenID Connect Front-Channel Logout

7.5 OpenID Connect Back-Channel Logout

7.6 まとめ

第8章 アプリケーションの実装例

8.1 Keycloakの紹介

8.2 Keycloakのインストールと初期設定

8.3 ディスカバリーエンドポイントの確認

8.4 サンプルプログラムの種類

8.5 まとめ

第9章 ClientがSPAの認可コードフローの サンプルプログラム

9.1 サンプルプログラムの概要

9.2 KeycloakでのClientの設定

9.3 SPA(Client)の実装

9.4 APIサーバ(Resource Server)の実装

9.5 動作の流れ

9.6 まとめ

第10章 ClientがBFFの認可コードフローのサンプルプログラム

10.1 サンプルプログラムの概要

10.2 KeycloakでのClientの設定

10.3 SPAの実装

10.4 BFFの実装

10.5 APIサーバの実装

10.6 動作の流れ

10.7 まとめ

第11章 Clientがネイティブアプリ(Androidアプリ)の認可コードフローのサンプルプログラム

11.1 サンプルプログラムの概要

11.2 KeycloakでのClientの設定

11.3 Androidアプリ(Client)の実装

  • 11.3.1 MainActivityクラス
  • 11.3.2 MainActivityViewModelクラス
  • 11.3.3 OidcClientクラス
  • 11.3.4 User.java、OrderItem.java
  • 11.3.5 その他

11.4 APIサーバの実装

11.5 動作の流れ

11.6 まとめ

第12章 クライアントクレデンシャルフローのサンプルプログラム

12.1 サンプルプログラムの概要

12.2 KeycloakでのClientの設定

12.3 バッチアプリ(Client)の実装

12.4 APIサーバの実装

12.5 動作の流れ

12.6 まとめ

第13章 セキュリティの脅威と対応

13.1 代表的なセキュリティの脅威と対応

13.2 オープンリダイレクター

  • 13.2.1 対応方法

13.3 Refererヘッダによる認可コードの漏えい

  • 13.3.1 対応方法

13.4 認可コードインジェクション

  • 13.4.1 対応方法

13.5 リダイレクションエンドポイントのCSRF

  • 13.5.1 対応方法

13.6 URIスキーマの不正な登録

  • 13.6.1 対応方法

13.7 Mix-Up攻撃(IdPの混同)

  • 13.7.1 対応方法

13.8 ほかのClientに発行したアクセストークンの転用

  • 13.8.1 対応方法

13.9 アプリケーション開発者が実施すべきこと

  • 13.9.1 HTTPSを使用する
  • 13.9.2 XSSの対策をする
  • 13.9.3 PKCEを使用する
  • 13.9.4 パブリックなClientでClient Secretを保持しない
  • 13.9.5 IdPに登録するリダイレクションエンドポイントのURLに.ワイルドカードを使用しない
  • 13.9.6 Resource Serverでaud Claimをチェックする
  • 13.9.7 アクセストークンの有効期間を短くする
  • 13.9.8 IdPを複数使用し、かつ信頼性に懸念がある場合はMix-Up攻撃の対応をする.
  • 13.9.9 高いセキュリティ要件を満たす必要がある場合は、FAPI 2.0の導入を検討する

13.10 まとめ

付録 A デバイスフロー

  • A.1 デバイスフローの概要
  • A.2 まとめ

付録B 外部IdP連携

  • B.1 外部IdP連携でやりたいこと
  • B.2 外部IdP連携のしくみ
  • B.3 まとめ

付録C OIDC関連の公式ドキュメント

  • C.1 コアとなる仕様
  • C.2 Clientの形態に特化したベストプラクティス
  • C.3 アクセストークン周り
  • C.4 セキュリティ
  • C.5 高いセキュリティ要件
  • C.6 ログアウト
  • C.7 JWT
  • C.8 その他
  • C.9 まとめ

プロフィール

土岐孝平ときこうへい

1976年宮崎生まれ。大学で情報工学を専攻。卒業後、いくつかの会社で働くが、いづれも上司とぶつかりすぐに退社。しばらく派遣社員としてさまざまな現場を経験したあと、2012年に合同会社 現場指向を設立。Javaをメインとしたアプリケーション開発の支援、教育をしている。

主な著書として、「プロになるためのSpring入門」「間違いだらけのソフトウェア・アーキテクチャ」共著(小社)、「ITアーキテクトのためのクラウド設計・構築実践ガイド」共著(日経BP社)、「OpenID Connect入門」(Kindle ダイレクト・パブリッシング)などがある。

合同会社 現場指向(げんばしこう)https://www.genba-oriented.com
方法論に固執しない、現場に合わせた実践的なソフトウェア開発を支援する一人社長の会社。研修サービスも提供している

倉林雅くらはやしまさる

一般社団法人OpenIDファウンデーション・ジャパン 理事・エバンジェリスト。OpenID、OAuth、パスキー(Passkeys)などの認証・認可技術の普及啓発および教育活動に従事。国内大手インターネット企業において長年、大規模な認証・認可基盤の開発・運用を経験。現在はプロダクトマネージャーとして、安全で利便性の高いデジタルアイデンティティ基盤の構築を牽引している。主な著書として、『パスキーのすべて 導入・UX設計・実装』(当社刊行)がある。

OpenIDファウンデーション・ジャパンhttps://www.openid.or.jp)」

インターネット上での安全なID連携や認証技術であるOpenID技術などの普及・啓発、および技術の国際化を支援している。