Keycloakで認証認可!!|APIの保護〜SPAのログイン機能、OIDC、 OAuthなど解説まとめ記事

はじめに

ここ数年、keycloakを認証認可サーバとして設定したり、

APIをKeycloakで保護したり、

SPAのログイン機能をkeycloakを利用して付けたり、

OIDC、OAuth2.0、認可コードフロー、トークンイントロスペクション、PKCE・・・

よくわからなかったこれらを自分なりに絵にして理解したり、

 

などなどしてきました。

今回はここ数年で学習した内容や現場で実際に設定したこと、

脆弱性診断で指摘された話などなど、認証と認可関連の内容をまとめ記事にしてみました。

 

Keycloakとは??認証と認可の違いとは??OIDCとOAuth2.0の違いとは??

認証と認可Keycloak入門という本で学習した内容を

特に重要と感じた部分に絞って記事にまとめたので紹介します!!

 

認証と認可の違いとKeycloakでできることについて

こちらの記事に内容をまとめています。

認証と認可 Keycloak入門第1章を読んでみて|気になったポイントと感想をまとめました

 

この記事で認証と認可の違い、

Keycloakでできることと、主なKeycloakのユースケースについて抑えることができます。

認証と認可周りについてある程度全体像がイメージできると思います。

 

OAuth2.0とOIDCとの違いについて

こちらの記事に内容をまとめています。

認証と認可 Keycloak入門第2章を読んでみて|特にOAuthとOIDCの違い中心に重要ポイントをまとめました。

 

この記事ではOAuth2.0とOIDCとの違いや

それぞれのプロトコルで登場する概念、

IDトークン、アクセストークンなどについて解説しています。

より認証と認可の内部の仕組みについて理解が深まると思います。

 

 

OIDCとSAMLの違いとさまざまなSSOの実現方法について

こちらの記事に内容をまとめています。

認証と認可 Keycloak入門第3章を読んでみて|OIDCとSAMLの違いとアプリケーションタイプ別SSO実装方式

 

この記事では認証結果を連携するOIDCとSAMLとの仕組みの違いや、

アプリケーションがSaaS、モノシリックなアプリ、SPAやネイティブアプリ

それぞれの場合におけるSSO実現方法について解説しています。

 

 

Keycloakの基礎とセッションやトークンの有効期限の関係について

こちらの記事に内容をまとめています。

 

Keycloakを導入する際に必要なKeycloak独自の基本的な概念についてと、

認証や認可の際のセッションやトークンの有効期限の関係について

解説しています。

 

Keycloakを認可サーバとして利用する場合や

SSOを実現するために導入する場合、

まずはここを押さえておくのがおすすめです!!

 

 

KeycloakでのAPI認可について

認可コードフローでアクセストークン発行までについて以下の記事に内容をまとめています。

認証と認可 Keycloak入門第5章を読んで|OAuthの認可コードフローをサンプルコードベースで解説

 

発行したアクセストークンの認可判断をしたり、トークンを無効にしたりなどは、

近々まとめる予定です。

 

 

Keycloakについて日本語で体系的にまとめてある本は現在これしかないです。

もしKeycloak導入を検討されている方にとっては心強いと思います。

興味のある方は是非読んでみてください。

 

 

 

 

 

Keycloakを使ってアプリケーションに認証認可機能、SSO機能をつけたサンプルコード

実際にKeycloakを利用したサンプルコードをいくつか作成したので紹介します!!

 

Vue.jsで作成したSPAにKeycloakでSSO機能をつける

Vue.jsでSPAを作成し、KeycloakでIDとパスワードでログインが行われていなければ

アプリが使えないように認証機能を付けるサンプルを作りました。

 

KeycloakのSPAに対するSSOで認証連携の仕組みを利用したものになります。

詳細はこちらの記事にまとめているので参照ください。

OAuth2.0の認可コードフローについて全体概要を解説

 

この記事にはOAuth2.0やOIDCの仕組みを理解する上で、

仕組みの基礎となっている認可コードフローについても

絵にしてまとめています。

 

Spring Bootで作成したRestAPIをKeycloakで保護する

Spring Bootで作成したRestAPIに連携されたトークンを、

トークンイントロスペクションでKeycloakと連携して検証できるようにする

サンプルコードを作りました。

 

詳細はこちらの記事にまとめているので参照ください。

spring bootで作成したREST APIをspring securityとkeycloakで保護する

 

これはJavaで書いたサンプルでしたが、

Kotlinでも書いてみたのでKotlinの方はこちらを参照ください。

kotlinで書いたAPIをspring securityとkeycloakで保護した話!!IntelliJでkotlin(Spring Boot)で開発環境を構築〜API作成〜認証機能付加まで

 

Google APIを利用するためにアクセストークンを発行する

昔書いた記事ですが、

Google APIと連携するようなアプリを作成する際、

Googleのトークンエンドポイントを叩いてアクセストークを発行する必要があります。

発行までの手順をまとめたので、興味のある方はこちら参照ください。

Google OAuthでAccess Tokenを取得する|Google APIを利用するための準備編

 

当時の手順が古い可能性があるので、、、、

そのうち確認し直します。

 

まとめ

今回紹介した内容が、

僕が数年間現場で認証認可サーバの構築をやってきて得た知識のほぼ全てです。

(PKCEについて脆弱性診断で指摘されて直して自分で脆弱性診断やった話とか

もあるのですが・・・そのうち追記します)

 

今後もFAPIやCIBAなどなどサンプリング検証したり、

現場で導入を求められるケースがあると思うので、

その際に得た知識はここに随時追記していこうと思います

 

このまとめ記事がどこかの現場でお役に立てば幸いです。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください