
今回、APIのセキュリティ確保に使用するKeycloakの概要についてご説明します。
本コースのテーマである、API認可、APIにアクセスするための権限付与をどう行い、API側で権限に基くアクセス制御をどう行うのか、その仕組みについて押さえます。ハンズオン時に自分が今認可プロセス全体のどの部分を設定、実装しているのか迷わず実施できるよう、 またハンズオンを実施しながら理論と、設定や実装の関係について理解が深められるようにしていきましょう。
Keycloakで所定の設定を行うために、最低限、覚えておくべき各用語の意味を確認しておきましょう。
実際に記事取得APIにアクセスするクライアントやユーザーを登録し、アクセス制御の設定を行うための、Keycloak編の最初の一歩として、インストールからサーバー起動、管理コンソール画面へのログインまで行います。
クライアントやユーザーの管理単位であるRealmを作成します。
前回作成したRealmにClientを作成します。
前回作成したClientを利用するUserを作成します。
Keycloakに対しベーシック会員、プレミアム会員、それぞれのユーザーでリクエストを送り、レスポンスとして、アクセス権としてのJSON Web Token (JWT)を取得するところまで行います。
Keycloakで発行したアクセストークンによるアクセス先の記事取得API開発や、セキュリティ追加実装の第一歩として、Spring Bootプロジェクトの雛型作成を行います。
Keycloakで発行したアクセストークンによるアクセス先の、記事取得APIの開発を行います。
Spring Securityの機能を使って、前回開発したAPIにセキュリティを追加します。
JWTの検証を、Spring SecurityのOAuth2リソースサーバー機能に実施させるための設定を行います。
前回の設定が有効かどうか確認するため、実際にKeycloakから取得したトークンを元に、APIにアクセスしていきます。
トークンベースでアクセスできるようになったAPIに対し、ロールに応じたより細かいアクセス制御を追加実装していきます。
前回実装したロールに応じたアクセス制御の前提処理として、JWTからロールを取得できるよう、JWTの形式を変換する処理を実装します。
実際にこれまで実装してきたアプリケーションを起動し、ロールに応じたアクセス制御を確認していきます。
ロールに応じたより細かいアクセス制御実装の第2弾として、有料記事の保護のため、メソッド内でユーザーのロールに応じたアクセス制御を行う、メソッド内認可の実装を行っていきます。
実際にこれまで実装してきたアプリケーションを起動し、ロールに応じたアクセス制御を確認していきます。
<コースの概要>
本コースはご自身のPCを使用してKeycloak & Spring Securityによるニュース記事取得REST API開発、APIのセキュリティ確保ハンズオンを実施します。Keycloakとは、Spring Securityの役割とはから始まり、KeycloakによるOAuth 2.0トークン発行フロー設定、Springによるニュース記事取得REST API開発、トークンベース/ロールベースアクセス制御追加を通じて、API認可を実践的に学ぶことができます。
<他教材との違い>
本コースと他教材(書籍やYoutube動画教材等)との違いは以下の通りです。
・1本完結型コースであるためご自身でネット検索やマニュアル確認等を行う手間がかからない。
・Keycloak & Spring Securityとは何か、なぜその手順で設定するのか等、解説する技術や手順一つとってもその理由や背景を詳細に説明しているため途中で止まらずに受講できる。
・全レクチャー動画ダウンロード可能なため、場所を問わずどこからでも受講できる。
・全ハンズオンに完成版のコード等を添付しているため、コーディングミスによる原因調査等、余計な手間がかからない。
<コースの内容>
本コースの内容は以下の通りです。
コース概要
本コース受講にあたって
自己紹介
本コースのねらい
Keycloak & Spring Securityハンズオン
概要編1 Keycloakとは
概要編2 API認可の仕組み
概要編3 Keycloak基本用語
Keycloak編1 インストール
Keycloak編2 Realm作成
Keycloak編3 Client作成
Keycloak編4 User作成
Keycloak編5 JSON Web Token (JWT)取得
Spring編1 アプリケーション雛型作成
Spring編2 API開発
Spring編3 セキュリティ追加
Spring編4 アプリケーション設定 (OAuth2 リソースサーバー設定追加)
Spring編5 APIアクセス
Spring編6 API修正
Spring編7 JSON Web Token (JWT)変換
Spring編8 API認可確認 (事前認可)
Spring編9 API修正
Spring編10 API認可確認 (メソッド内認可)
ボーナスレクチャー
ボーナスレクチャー