はじめに
認証と認可 Keycloak入門の第1章 Keycloakを理解するための第一歩を読んで、
実際にKeycloakを業務で利用している自分の観点で気になったポイントと感想をまとめました。
「Keycloakを導入検討していて、本を買って読んでみたけど理解が怪しい。。。」
という方に参考にして頂ければ幸いです。
2022/3/26追記
KeycloakでSpring Bootで作成したRestAPIを保護、
SPAにKeycloakのSSO機能でログイン機能を追加、
OIDCやOAuth2.0の違い解説などなどをまとめたまとめ記事を作りました。
興味のある方は是非みてください!!
keycloakでAPI保護・SPAログイン機能設定例、OIDC・OAuth・PKCE・認可コードフロー図解などまとめ
認証と認可とは
認証は誰??を確認する作業で、
認可は何をさせる??(権限)与える作業です。
ここの説明が本ではインターネットバンキングの例を使ってされていましたが、
めちゃくちゃわかりやすかったです。(人に説明するときに使わせて頂こうかと。。。)
簡単に僕の解釈を文章と絵にすると・・・
インターネットバンキングはWebアプリケーションとRest APIの2つの口があり、
ユーザはブラウザでWebアプリケーションでにログインして残高照会ができます。
このログインの際にユーザIDとパスワードで認証します。
また、ユーザは家計簿アプリも利用しており、
例えばちょっと僕の妄想も交えると、
家計簿アプリの分析機能は口座の残高と連携して分析結果を表示できる。
機能を使おうとすると、ポップアップが開いて、「家計簿アプリに残高照会を許可しますか??」
と聞かれ、許可ボタンを押して認可します。
こんな感じです。
認可は、厳密に言うと、
認証済みのAさん(誰が)が家計簿アプリ(誰に)に残高照会機能へのアクセス権(何の権限)を与える作業のことです。
なので、
認証の要素も含んで認可と言うこともあって、混乱しちゃったりします。(僕は混乱しました)
この認証と認可についてはかっちり理解しておくと、
今どっちの話をしているのかはっきりするのでカチッと押さえておきましょう!!
keycloakとは
今まで、
僕はOSSの認証認可の機能を持つミドルウェアくらいの理解でしたが、、
本の説明はこんな感じ・・・
適切な人が適切なリソースに適切な理由のため適切なタイミングでアクセスできるようにする
IAM(Identity and Access Management)ソフトウェアであり、
IAMの中でもWebベースのシステムにおける認証機能と認可機能を担うのがKeycloak
KeycloakはOSSなので無料だけど、、 問題が起きたら自分で解決が必要。
OpenStandia、やKeycloakの特定バージョンをベースにしたRed Hat SSOを利用すれば
サポートしてもらえるためKeycloakが採用されるケースが増えているみたい。
ちなみに、
僕は現場でKeycloakでハマってOpenStandia利用したことがあって、
この本の著者の方が会社に来られたり、サポートして頂いたりしたことがあります。
keycloakの主要ユースケース3つ
Keycloakの主要なユースケースは以下の3つだそうです。
- SSO(Single Sign On)
- API認可
- SNSや外部の独自認証基盤への認証の委譲
このあたりの仕組みやKeycloakの設定方法については別の章で解説してくれるので、
それベースに実際にサンプル作ってみようと思います。
API認可は先ほどのインターネットバンキングのRest APIを家計簿アプリにアクセス許可するイメージで、
SSOはシステムが複数あって1システムログインしたら他のシステムはログイン不要で使えるイメージで、
SNSや外部の独自認証基盤への認証の委譲は、
ログイン画面にgoogleアカウントでログインとかtwitterアカウントでログインとかのボタンのイメージですね。
Keycloakではこれらの機能があるそうです。。。ややこしい
ユーザーストレージフェデレーション
外部で管理されているユーザ情報を使って認証できる機能
アイデンティティーブローカリング
SNSや外部の認証基盤などに認証を委譲できる機能
まとめ
本ではKeycloakについて体系的に学べるのと、一般的な認証認可の説明までしてくれてるので、
1章はかなり読みやすかったと思います。
個人的に1章で抑えておきたいのはこれらだと考えています。
- 認証と認可の違い
- Keycloakの主要ユースケース3つ(SSO、API認可、認証委譲)
Keycloakの設定周りやその他の機能については触りながら掴んでいけばいいですが、
上記は基本的な内容なので、抑えておけば次章以降はスムーズに読み進められると思います。
ちなみに、
Keycloakを利用してSPA(Single Page Application)に認証機能を付けたサンプルコードを以前作成したので、
興味があれば参照ください!!