目次
はじめに
ここ数年、keycloakを認証認可サーバとして設定したり、
APIをKeycloakで保護したり、
SPAのログイン機能をkeycloakを利用して付けたり、
OIDC、OAuth2.0、認可コードフロー、トークンイントロスペクション、PKCE・・・
よくわからなかったこれらを自分なりに絵にして理解したり、
などなどしてきました。
今回はここ数年で学習した内容や現場で実際に設定したこと、
脆弱性診断で指摘された話などなど、認証と認可関連の内容をまとめ記事にしてみました。
Keycloakとは??認証と認可の違いとは??OIDCとOAuth2.0の違いとは??
認証と認可Keycloak入門という本で学習した内容を
特に重要と感じた部分に絞って記事にまとめたので紹介します!!
認証と認可の違いとKeycloakでできることについて
こちらの記事に内容をまとめています。

この記事で認証と認可の違い、
Keycloakでできることと、主なKeycloakのユースケースについて抑えることができます。
認証と認可周りについてある程度全体像がイメージできると思います。
OAuth2.0とOIDCとの違いについて
こちらの記事に内容をまとめています。

この記事ではOAuth2.0とOIDCとの違いや
それぞれのプロトコルで登場する概念、
IDトークン、アクセストークンなどについて解説しています。
より認証と認可の内部の仕組みについて理解が深まると思います。
OIDCとSAMLの違いとさまざまなSSOの実現方法について
こちらの記事に内容をまとめています。

この記事では認証結果を連携するOIDCとSAMLとの仕組みの違いや、
アプリケーションがSaaS、モノシリックなアプリ、SPAやネイティブアプリ
それぞれの場合におけるSSO実現方法について解説しています。
Keycloakの基礎とセッションやトークンの有効期限の関係について
こちらの記事に内容をまとめています。
Keycloakを導入する際に必要なKeycloak独自の基本的な概念についてと、
認証や認可の際のセッションやトークンの有効期限の関係について
解説しています。
Keycloakを認可サーバとして利用する場合や
SSOを実現するために導入する場合、
まずはここを押さえておくのがおすすめです!!
KeycloakでのAPI認可について
認可コードフローでアクセストークン発行までについて以下の記事に内容をまとめています。

発行したアクセストークンの認可判断をしたり、トークンを無効にしたりなどは、
近々まとめる予定です。
Keycloakについて日本語で体系的にまとめてある本は現在これしかないです。
もしKeycloak導入を検討されている方にとっては心強いと思います。
興味のある方は是非読んでみてください。
Keycloakを使ってアプリケーションに認証認可機能、SSO機能をつけたサンプルコード
実際にKeycloakを利用したサンプルコードをいくつか作成したので紹介します!!
Vue.jsで作成したSPAにKeycloakでSSO機能をつける
Vue.jsでSPAを作成し、KeycloakでIDとパスワードでログインが行われていなければ
アプリが使えないように認証機能を付けるサンプルを作りました。
KeycloakのSPAに対するSSOで認証連携の仕組みを利用したものになります。
詳細はこちらの記事にまとめているので参照ください。

この記事にはOAuth2.0やOIDCの仕組みを理解する上で、
仕組みの基礎となっている認可コードフローについても
絵にしてまとめています。
Spring Bootで作成したRestAPIをKeycloakで保護する
Spring Bootで作成したRestAPIに連携されたトークンを、
トークンイントロスペクションでKeycloakと連携して検証できるようにする
サンプルコードを作りました。
詳細はこちらの記事にまとめているので参照ください。

これはJavaで書いたサンプルでしたが、
Kotlinでも書いてみたのでKotlinの方はこちらを参照ください。

Google APIを利用するためにアクセストークンを発行する
昔書いた記事ですが、
Google APIと連携するようなアプリを作成する際、
Googleのトークンエンドポイントを叩いてアクセストークを発行する必要があります。
発行までの手順をまとめたので、興味のある方はこちら参照ください。

当時の手順が古い可能性があるので、、、、
そのうち確認し直します。
まとめ
今回紹介した内容が、
僕が数年間現場で認証認可サーバの構築をやってきて得た知識のほぼ全てです。
(PKCEについて脆弱性診断で指摘されて直して自分で脆弱性診断やった話とか
もあるのですが・・・そのうち追記します)
今後もFAPIやCIBAなどなどサンプリング検証したり、
現場で導入を求められるケースがあると思うので、
その際に得た知識はここに随時追記していこうと思います
このまとめ記事がどこかの現場でお役に立てば幸いです。