Keycloakの概要情報をまとめる。学習目的記事。
Keycloakとは?
- オープンソースのアイデンティティ・アクセス管理用ソフト。
Keycloakの機能
※以下、公式サイトより抜粋。
- SSO/SLO
- 以下のプロトコルサポート
- OpenID Connect
- OAuth 2.0
- SAML
- 外部のOpenID Connect/SAMLに対応しIdPによる認証。
- ソーシャル・ログイン
- ユーザー・フェデレーション
- ユーザー、ロール、ロール・マッピング、クライアント設定の管理コンソール。
- ユーザーに自身のアカウントを一元管理することを許可するためのアカウント管理コンソール。
- 二要素認証
- ログイン・フロー
など...
Keycloakの概念
-
ユーザー
- システムにログイン可能なエンティティーを指す。Eメール、ユーザー名、住所、電話番号、生年月日など自分自身に関連する属性を保持する。また、"グループ"や"ロール"が割り当てられることもある。
-
クレデンシャル
- Keycloakがユーザーの身元を確認するために使用するデータの一部を指す。例:パスワード、ワンタイムパスワード、デジタル証明書、指紋など。
-
ロール
- ユーザーのタイプまたはグループの識別子を指す。
Admin
、user
、manager
、employee
などが組織内に存在するロールとして定義されている。パーミッションを割り当てて、複数のユーザーに対する制御が可能。ユーザーには0以上のロールをマッピング可能。
- ユーザーのタイプまたはグループの識別子を指す。
-
グループ
- ユーザーの管理単位を指す。属性を定義可能。ロールをマッピングできる。グループのメンバーになったユーザーは、そのグループが定義する属性とロールのマッピングを継承する。
-
レルム
- ユーザー、クレデンシャル、ロール、および、グループのセットを管理する主体を指す。ユーザーは属しているレルムにログインする。レルムは互いに分離され、制御するユーザーのみを管理し、認証できる。
-
クライアント
- Keycloakにユーザーの認証を要求できるエンティティーを指す。Keycloakを使用して自身を保護し、シングル・サインオン機能を提供するアプリケーションとサービスを指す。また、クライアントはKeycloakによって保護されるネットワーク上の他サービスをセキュアに呼び出すために、アイデンティティー情報やアクセストークンを要求する。
ローカルDocker環境構築
ローカルでのDocker環境構築例
-
以下のDockerコマンドを実行する。
docker run -d -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=adminpass --name keycloak_test jboss/keycloak
※初期ユーザー情報やポート、コンテナ名は自環境に合わせて適宜設定する。
-
ブラウザからhttp://localhost:8080/auth/admin/ (ログイン画面)にアクセスする。
※以下の画面が表示される。