Application)にSSO機能をkeycloak(認証認可サーバ)で付与する例を使って図解しました。認可コードフローの全体概要をまとめました。今回は実際に認証認可サーバの設定、フロントエンド、リソースサーバの細かい設定や開発周りは省略しますが、アプリケーションのシステム構成はこんな感じで、ローカル環境で動作確認した際の具体的なリクエストやレスポンスを例に交えながら認可コードフローについて説明します。認可コードフローを絵にするとこんな感じです。上のフローで重要なポイントに絞って説明していきます。認可リクエスト|SPA→認可サーバ未ログイン状態でユーザがSPAにアクセスしたら、SPAはkeycloak-js(認可サーバのアダプタ)を利用して認可リクエストパラメータを作成して認可エンドポイントにアクセスします。興味がある方はAuthlete川崎さんの以下の記事がわかりやすいのでオススメです。認可コード取得|認可サーバ→SPAログイン画面でIDとパスワードを入力してログインすると認可決定エンドポイントにアクセスして、リダイレクトで認可コードが返却されます。axiosの共通ヘッダのAuthorizationに設定しておきます。profile"}今回はアクセストークンをkeycloak-jsライブラリの変数で保持させていますが、localStorageや変数で保持させているとXSS攻撃を受けるとアクセストークンにアクセス(抜き取られる)できてしまいます。その対策としては、そもそもXSSに対する根本対応を取るべきだとは思いますが、ただ、、、アクセストークンを盗まれてもそれだけでは不正にリソースサーバにアクセスできないようにDPoPを導入するか、、フロントエンドにアクセストークンを晒さないようにBFFを用意してそこで認可サーバとやり取りをさせる仕組みにした方がよりセキュアです。ヘッダ付きでリソースサーバのエンドポイントをコールし、リソースサーバはspring-boot-starter-oauth2-resource-serverを利用して認可サーバのトークンイントロスペクションエンドポイントを利用してアクセストークンを検証します。Connect)です。発行されたアクセストークンをリソースサーバでトークンイントロスペクションで検証してリソースを返却する流れを見てきました。原因調査のあたりがつけやすくなります。API(FAPI)といったさらに高セキュアな仕様もある程度すんなり理解できるはずです。(ちなみにkeycloakはFAPIや他にもCIBA等にも対応しており、まだまだ使い倒したいと思っています。認証認可周りの諸々をまとめた記事を作りました。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。