Keycloak情報
Keycloakとは
Keycloak(キークローク)とは、Web上でのシングルサインオン(SSO)(※1)を実現するためのJavaベースのIAM (Identity and Access Management) のソフトウェアで、2014年にバージョン1.0.0がリリースされた、競合他社製品に比較すると後発のものとなります。Keycloakは、Red Hat JBossプロジェクトが開発を進めているOSS(オープンソースソフトウェア)であり、Apacheライセンスとしてソースコードが公開されています。Keycloakは、アプリケーションやサービスとの連携を目的としており、SAML、OpenID Connectに対応した認証・認可だけではなく、多要素認証やSNS認証、LDAP連携、WebAuthn等の多くの機能が備わっています。
また、Red Hat社は、Keycloakをベースとした「Red Hat build of Keycloak(RHBK)」(※2)を販売しています。「RHBK」の保守サポートやマイグレーションについても、弊社までお気軽にお問い合わせください。
- シングルサインオン (Single Sign-On:SSO) とは、複数の情報システムのユーザIDを統合管理し、利用するシステム毎にユーザID/パスワード等の入力による認証を必要とせず、一度だけの認証(一つのユーザIDとパスワード)で複数のシステムを利用できる仕組みです。シングルサインオンはユーザやシステム管理者の ID管理の手間を軽減するだけでなく、個人情報の漏洩防止やセキュリティ対策、アクセス制御を統合・強化といった観点からも現在多くの企業にとって欠かせないものになっています。
- 以前は、「Red Hat SSO」という名称で呼ばれていました。RHBKになってからは ランタイムがJBoss EAPから、Quarkusに変更されています。
Keycloakの業界標準仕様対応
Keycloakは、業界標準の、以下の仕様をサポートしています。
- 
SAML 2.0
 標準化団体OASISによって策定された、IDやパスワードなどの認証情報を安全に交換するためのXML仕様です。歴史あるプロトコルのため、多くのアイデンティティ管理ベンダーによって実装されており、提供されているサービスやソフトウェアが多く、GoogleやSalesforceなどのクラウドサービス、学認(Shibboleth)などとの連携が可能です。
- 
OpenID Connect
 標準化団体OpenID Foundationによって策定されたREST/JSONベースのプロトコルです。OAuth 2.0をベースに認証目的でも利用できるように拡張しています。野村総合研究所、グーグルなどにより開発が開始され、2014年2月に最終承認された現在最も新しいフェデレーションプロトコルです。グーグル、マイクロソフト、セールスフォースなど多くの企業がサポートしており、現在はデファクトスタンダードとなっています。
- 
OAuth 2.0
 OAuth 2.0は仕様が簡略化され使いやすくなった次世代のOAuthプロトコルであり、クライアントとなるWebアプリ、デスクトップアプリ、スマートフォン、リビングデバイス等のクライアントプロファイルを仕様化しています。認証ではなく、認可(どのリソースにアクセスできるか)について規定している点で他のプロトコルとは異なります。Facebook、Google、Microsoftなどの多くの企業のさまざまなサービスで実装されています。
主な機能
シングルサインオン機能
Keycloakで認証されたユーザは、Keycloakで管理したリソースに再度認証(パスワードを再入力)する必要なくアクセスできます。
<実現方式>
| パターンA:エージェント方式 | パターンB:リバースプロキシ方式 | 
|---|---|
| 連携システムのサーバ内に、シングルサインオンするためのモジュール(OIDC/SAMLライブラリ)(※3)を直接組み込む方式です。 | ユーザからのアクセスを一度、OIDC/SAMLライブラリを導入したサーバが受け、そのリクエストを連携システムへ中継する方式です。 | 
|   |   | 
※3 Keycloakコミュニティから提供されていたクライアントアダプタは、JavaScriptアダプタを除き、すべてが非推奨/EOLとなっています。そのため、どちらの方式であっても、アプリケーションで利用可能なサードパーティのOIDC/SAMLライブラリを利用する必要があります。
フェデレーション(連携)機能
ID管理が独立した複数のサイト間でのシングルサインオンができる機能です。例えば、Salesforce CRM、Google Workspaceのような他社の異なるドメインのWebアプリケーションに対しても自分のID/パスワードでシングルサインオンが可能です。フェデレーションを実現するための、業界標準の認証プロトコル「SAML」や「OpenID Connect」に対応しています。また、KeycloakはFacebook、Google、X等のソーシャルネットワーキングサービスや、既存のOpenID Connectプロバイダ、もしくはSAML 2.0プロバイダと連携させることで、それらに登録されているIDによりKeycloakにログインさせることが可能です。連携させるにはコードやアプリケーション側の修正は不要で、Keycloakの管理コンソールで設定を追加するだけです。
ID管理機能
Keycloakは以下の属性を管理できます。
| ユーザ(User) | 認証(ログイン)単位です。 | 
|---|---|
| グループ(Group) | ユーザを配属させることができます。 | 
| ロール(Role) | 権限を表現したものです。 | 
管理者は上記属性を一般ユーザに割り振る権限を持ちます。
イベントロギング機能
監査の目的で、ログインイベント(ログインやログアウト、メールアドレスの変更やパスワードリセット等の操作)と管理イベント(管理コンソール上で行った操作)を記録・閲覧することができます。
マルチテナント機能
Keycloakはレルムという単位ごとに設定を管理しています。レルムを複数作成することによりマルチテナントでの利用が可能です。
セルフサービス機能
ユーザ自身によるアカウント管理ができます。管理機能は以下の通りです。
- 
アカウントの登録
 ログイン画面のリンクから新規ユーザ登録が可能です。
- 
パスワードリセット
 ログイン画面のリンクからパスワード変更が可能です。入力したメールアドレス宛に送られたメールに記載されたリンクをクリックすることで登録が完了します。
- 
ユーザ属性の変更
 自身のユーザ属性(ユーザ名やメールアドレス等)を変更することが可能です。
- 
OTP/パスキーの認証機登録/削除
 ユーザが多要素認証を利用したい場合に、OTP Authenticatorの登録/削除や、パスキーで利用する認証機の登録/削除が可能です。
タイムアウト機能
システムを一定期間使用していない場合に、自動的にログオフします。
管理コンソール機能
Keycloakの管理コンソールにより、管理者は前述の機能を集中管理することができます。
主な特徴
Keycloakは、次のような特徴があります
| 高い安定性と信頼性 | 商用サポートあり | Keycloakには、商用製品の Red Hat build of Keycloak(RHBK)も提供されており、導入から運用までワントップでサポートします。 | 
|---|---|---|
| 汎用性 | Javaベース | KeycloakはJavaで開発されているため、多くの企業情報システム間でのシングルサインオン環境を構築できる汎用性がありま す。 | 
| 拡張性 | マルチプラットフォーム | KeycloakはRed Hat Enterprise Linux、CentOS、Microsoft Windowsなどの様々なOSプラットフォームに対応しています。 | 
| 様々な認証方式に対応 | 多要素認証やOTP(ワンタイムパスワード)認証、統合Windows認証、パスキーなど様々な認証方式と連携できます。 | |
| SAML 2.0に対応 | Keycloakは国際標準の認証プロトコルSAML 2.0に対応しているため、同一の認証プロトコルに対応したSaaS系アプリ ケーション(例えばSalesforceやGoogle等)とも連携ができます。 | |
| OpenID Connectに対応 | 野村総合研究所、Googleなどにより開発が開始され、2014年2月に最終承認された最も新しく、すでに多くのサービスで利用されているフェデレーションプロトコルに対応しており、各種SaaSサービスとのシングルサインオンにも対応が可能です。 | |
| クロスドメイン・シングルサインオン | 複数のDNSドメインをまたがるシングルサインオンであるクロスドメイン・シングルサインオンに対応しています。 | |
| SPI | JavaのSPI (service provider interface) という仕組みを利用して、標準では対応していないソーシャルプロバイダを追加したり、お客様固有の認証処理やユーザー・ストレージ、RESTエンドポイントなどを組み込んだりすることが可能です。 | |
| 柔軟性 | 顧客要件に応じた細かいカスタマイズが容易 | Webサーバやデータベースなどの基盤ミドルウェアと異なり、認証基盤には様々な顧客要件を組み入れる必要があります。例えば、連携先となる業務システムの認証方式や、ID管理の業務運用、IDデータの取り込み方式など、様々なパターンを個別設計する必要があります。OSSのKeycloakは、商用製品と比較して顧客要件に応じた細かいカスタマイズが容易であることが大きなメリットとなります。 | 
| 長期利用 | 継続的な安定利用 | OSSは、商用製品のように開発企業の買収などによってサポートが打ち切られる心配が少ないと言えます。 | 
導入事例
1.Keycloakのアカウントが意図せずロックされる問題を解消
このページでは、Keycloakのアカウントロックについての問い合わせに対して、どのようなサポートをしたかを紹介します。
この問い合わせは、ブルートフォース攻撃の対策のためにKeycloakのブルートフォース検知機能を有効にしたところ、アカウントが意図せずロックされることが度々あったため、なぜこのようなことが起きるのかを教えて欲しいというものでした。 ブルートフォース検知機能は管理コンソールの「Realm Settings」の「Security Defenses」の「Brute Force Detection」タブから 設定ができます。
使用しているKeycloakのバージョンは4.8.3でした。
問い合わせの内容などをもとにKeycloakの動作確認をしてみると、どうもログインボタンを二度押しするとアカウントがロックされるようです。 しかし、ログインボタンをクリックすると、レスポンスが返ってくるまでの間、ボタンのプロテクトがかかり、 二度押しを防止する対策はできているように見えます(以下のようにボタンをクリックした直後は色が変わり、 クリックしてもリクエストは送信されていません)。
さらに動作検証してみると、ログインボタンをクリックし、レスポンスが返ってきてすぐにログインボタンをクリックすると (パスワードを入力せずすぐに)、アカウントが一時的にロックされることが分かりました。このような操作を、 ユーザーが意図的に行うことはありませんが、誤ってボタンをクリックしてしまうことは十分にありえます。
このようなKeycloakの動作はユーザーにとっては好ましいものではありません。 ユーザーはアカウントがロックされたことに気づかないまま、正しいパスワードでのログインに失敗し続けることになるでしょう。 ユーザーは混乱してしまいます。そして、パスワードが間違っていると判断し、本来必要のないパスワードのリセットを行うことにもなります。
しかし、なぜこのような誤操作でアカウントがロックされてしまうのでしょうか? Keycloakのブルートフォース検知機能のうち以下の2つの設定が影響していました。
- 
Quick Login Check Milli Seconds
 前回のログイン失敗からこの時間経過せずにログインを行うと一時的にアカウントをロックする。デフォルトは1000ミリ秒。
- 
Minimum Quick Login Wait
 Quick Login Check Milli Secondsより早いログイン試行があった場合の、一時的にアカウントをロックする時間。デフォルトは1分。
つまり、1秒以内にログインが2回失敗すると、アカウントは1分間ロックされてしまうことになります。
Keycloakのドキュメントに記載されている通りの動作ではあるのですが、ユーザーの利便性にとってよくありません。 ひとまず顧客への暫定対応として「Quick Login Check Milli Seconds」を短くすることを提案し、 根本対策のためにKeycloakの課題管理システムへのバグ報告(改善案の提示)とその修正のプルリクエストをすることを検討しました。
ではどのようにこの問題を改善すればいいのでしょうか?「Quick Login Check」自体を無くしてしまえばいいのでしょうか? しかし、短時間に連続でログインリクエストを送信するブルートフォース攻撃の対策のためには残しておいた方がいいでしょう。
少し考えてみると、結論は単純でした。今回の問題はパスワードを入力する間もなく短時間にログインリクエストを送信している場合の問題ですが、 そもそもブルートフォース攻撃は様々なパスワードを試行するので、パスワードが未入力のリクエストを何度も送信してくることを防御する必要はないはずです (認証成功するはずがログイン試行を攻撃者はしないので)。
ということで、パスワードが未入力のログインリクエストはブルートフォース検知の処理を行う前に入力エラーにしてしまうことにしました。 その後、プルリクエストを行い、無事マージされました。
2.Javaアダプターでトークン更新処理が競合してエラーが発生する問題を解消
KeycloakのJavaアダプターには、アクセストークンの有効期限が切れる前(もしくは切れた後)に内部処理でリフレッシュトークンを利用してトークン更新を行う機能があります。
ある顧客環境ではセキュリティの要件により、Keycloakでリフレッシュトークンの再利用不可(Revoke Refresh Token: ON、Refresh Token Max Reuse: 0)に設定していました。この設定の場合、発行されたリフレッシュトークンは1回だけ利用可能で、同じ値の再利用は不可となります。このような環境でJavaアダプターのトークン更新処理が競合してしまい、リフレッシュトークンの再利用不可のエラーが発生するという問い合わせがあり、調査を行いました。
再現確認および調査
顧客環境では、Keycloak 6.0.1(およびJavaサーブレットフィルターアダプター)が使われていました。まずは、その当時の最新版であるKeycloak 9.0.0でも再現するかどうか、シンプルなSPAを作成し再現確認を行います。
Keycloakでは下記のようにリフレッシュトークンの再利用不可の設定および、アクセストークンの有効期限を最小(1分)に設定します。
 
Javaサーブレットフィルターアダプターの適用されているSPAでは、Ajaxにより指定した回数のリクエストを同時に投げられるボタンをいくか用意しておき、非同期で複数のリクエストが行われる状況を再現できるようにしておきます(カッコ内の数字が同時に投げるリクエスト数を表しています)。
 
問題発生時のcatalina.out
下記はこのアプリケーションにログインしてから、数分経過後(アクセストークンの有効期限切れの後)に "ajaxPosting(3)"ボタンを押下した場合のcatalina.outログの一部抜粋です。
03-Mar-2020 20:15:35.743 DEBUG [http-nio-8080-exec-1] org.keycloak.adapters.RefreshableKeycloakSecurityContext.refreshExpiredToken Token Verification succeeded!
03-Mar-2020 20:15:35.794 ERROR [http-nio-8080-exec-10] org.keycloak.adapters.RefreshableKeycloakSecurityContext.refreshExpiredToken Refresh token failure status: 400 {"error":"invalid_grant","error_description":"Maximum allowed refresh token reuse exceeded"}
03-Mar-2020 20:15:35.957 ERROR [http-nio-8080-exec-2] org.keycloak.adapters.RefreshableKeycloakSecurityContext.refreshExpiredToken Refresh token failure status: 400 {"error":"invalid_grant","error_description":"Maximum allowed refresh token reuse exceeded"}
最初のリクエストに対応するスレッド(http-nio-8080-exec-1)では、リフレッシュトークンは成功しますが、後続の2リクエストに対応するスレッド(http-nio-8080-exec-10、http-nio-8080-exec-2)でもトークン更新処理が実行されてしまい、リフレッシュトークンの再利用不可のエラー("Maximum allowed refresh token reuse exceeded")が発生していることが分かります。
そこで、Javaサーブレットフィルターアダプター側のトークン更新箇所のソースコード調査を進めたところ、下記の「★★★」の箇所のメソッド呼び出しに排他制御がかかっておらず、同タイミングで複数のリクエストがあると、同じリフレッシュトークンでトークン更新処理を複数のスレッドで競合して呼び出してしまうことが分かりました。
OIDCFilterSessionStore#checkCurrentToken メソッド内
@Override
public void checkCurrentToken() {
    HttpSession httpSession = request.getSession(false);
    if (httpSession == null) return;
    SerializableKeycloakAccount account = (SerializableKeycloakAccount)httpSession.getAttribute(KeycloakAccount.class.getName());
    if (account == null) {
        return;
    }
    RefreshableKeycloakSecurityContext session = account.getKeycloakSecurityContext();
    if (session == null) return;
    // just in case session got serialized
    if (session.getDeployment() == null) session.setCurrentRequestInfo(deployment, this);
    if (session.isActive() && !session.getDeployment().isAlwaysRefreshToken()) return;
    // FYI: A refresh requires same scope, so same roles will be set.  Otherwise, refresh will fail and token will
    // not be updated
    boolean success = session.refreshExpiredToken(false);  <=== ★★★
    if (success && session.isActive()) return;
    // Refresh failed, so user is already logged out from keycloak. Cleanup and expire our session
    //log.fine("Cleanup and expire session " + httpSession.getId() + " after failed refresh");
    cleanSession(httpSession);
    httpSession.invalidate();
}
暫定的にこのメソッド内のsessionインスタンスの利用される範囲をsynchronizedブロックで排他制御を加えたところ、問題が再現しなくなることが確認できました。つまり、Javaアダプターのリフレッシュトークン処理ではスレッドの排他制御に関して、潜在的なバグがあることが判明しました。
まとめ
上記のような調査結果から、以下の3つの条件を満たした場合に、問題の事象が再現することが確認できました。
- Keycloak 10.0.0より前のJavaアダプターを利用
- Keycloakのセキュリティ設定で、リフレッシュトークンの再利用不可(Revoke Refresh Token: ON"、Refresh Token Max Reuse: 0)の設定を利用
- アクセストークンの有効期限が切れた状態で、アプリケーションのAjaxなどから、Javaアダプターに同時に複数のリクエストが発生する
直接の原因は、Javaアダプター内のトークン更新処理に排他制御がかかっていなことに起因したものでした。当該問題に関しては、Keycloakのコミュニティに報告を行い、バグとして修正されました。 実際のやりとりは以下の通りです。
- KEYCLOAK-13187 The problem that refresh token conflicts when "Revoke Refresh Token" is ON
- [KEYCLOAK-13187] - Concurrency issue when refreshing tokens and updating security context state #6881
Keycloak 10.0.0以上でこの問題は修正されています。
コミュニティ活動
1.日本語ドキュメント
NRI OpenStandiaが作成したKeycloakの日本語ドキュメントです。
※翻訳が完了していないドキュメントもありますのでご了承ください。
| Release Notes | Release Notes Keycloakのリリースノートです。 | 
|---|---|
| Securing Apps | Keycloak を利用したアプリケーションの保護方法についてのガイドです。 | 
| Server Admin | Keycloak サーバーの管理方法についてのガイドです。 | 
| Server Development | Keycloak サーバーのテーマやプロバイダーのカスタマイズ方法についてのガイドです。 | 
| Authorization Services | アプリケーションとサービスのきめ細かい権限管理方法についてのガイドです。 | 
| Upgrading | Keycloak サーバーのアップグレード方法についてのガイドです。 | 
元リンクページ:https://keycloak-documentation.openstandia.jp/
Keycloakの実際・翻訳プロジェクト紹介
2.書籍執筆
OpenStandiaのエンジニアを含む有志により、以下のKeycloak関連書籍が出版されています。
Keycloakについて体系的かつ深く説明しているため、詳細な技術情報を知りたい方はぜひチェックしてみてください。
3. 登壇
OpenStandiaのエンジニアがKeycloak関連で登壇した事例を紹介します。
欧州データ連携基盤におけるKeycloakの事例
4. Qiita記事
得られた知見をコミュニティに還元するために、Qiita記事の執筆を行っています。
一部のQiita記事をご紹介します。
- Keycloakにおける多要素認証
- EKSを使ってクラスタ構成のKeycloakを構築してみた
- Keycloakを使ってAPI GatewayでAPIをアクセス制限する
- KeycloakでSAMLを使ってみる(WordPress編)
- AWS ECS Fargate で keycloak をクラスタ構成で動かしてみる
- KeycloakのJavaScriptクライアントアダプターを使ってみる
- 【Keycloak】Admin REST API によるユーザ一覧の取得
- Keycloakの最新機能について調査
- Keycloakの多言語対応の最新状況
- Keycloakと外部IdP間のHTTPS通信をデバッグする
商用製品との機能比較
OpenAMは、Keycloakと同じくシングルサインオンを実現するためのOSSであり、数多くの導入実績があります。KeycloakとOpenAMの機能比較は以下となります。
| モジュール | 機能 | Keycloak | OpenAM | 
|---|---|---|---|
| 認証 | 多要素認証 | ○ | ○ | 
| ワンタイムパスワード | ○ | ○ | |
| クロスドメイン・シングルサインオン認証 | ○ | ○ | |
| 認可 | ユーザ属性アクセス制御 | ○[1] | ○ | 
| 権限アクセス制御(ロール) | ○[1] | ○ | |
| その他アクセス制御 | ○[1] | ○ | |
| 連携 | 各種フェデレーションへの対応 | ○ | ○ | 
| デスクトップ認証連携 | ○ | ○ | |
| 代理認証連携 | ×[2] | △[2] | |
| 外部IDP認証連携 | ○ | ○ | |
| リスクベース認証 | アダプティブ認証 | × | ○ | 
| デバイスプリント認証 | × | ○ | |
| スクリプト認証 | × | ○ | |
| セルフサービス | ユーザ自身によるアカウント登録 | ○ | ○ | 
| ユーザ自身によるパスワードリセット | ○ | ○ | |
| ユーザ自身によるユーザ属性の変更 | ○ | ○ | 
[1] Keycloakのポリシーエンフォーサライブラリ(https://www.keycloak.org/docs/latest/authorization_services/index.html#_enforcer_overview)を利用していることが前提となります。
[2] 実装されていない機能のため、別途、個別のカスタマイズが必要となります。OpenAMは、OpenAMと連携可能なOpenIGというソフトウェアにより代理認証が実現できます。
ユースケース
Keycloakは、SAML 2.0とOAuth 2.0/OpenID Connect 1.0を実装しており、これらのプロトコルを使って、様々なサービスやソフトウェアと連携することができます。
| サービス、ソフトウェア名 | 連携プロトコル | ロール | カスタマイズ | 備考 | 
|---|---|---|---|---|
| AWSマネージメントコンソール | SAML 2.0 | IdP | 不要 | |
| Office 365 | SAML 2.0/ OpenID Connect 1.0 | IdP / OP | 不要 | |
| Google Workspace(G Suite) | SAML 2.0 | IdP | 不要 | |
| Slack | SAML 2.0 | IdP | 不要 | |
| Onelogin | OpenID Connect 1.0 | OP | 不要 | |
| Salesforce | OpenID Connect 1.0 | OP | 不要 | |
| Box | SAML 2.0 | IdP | 不要 | |
| JIRA | SAML 2.0 | IdP | 不要 | ※有償プラグイン利用 | 
| Confluence | SAML 2.0 | IdP | 不要 | ※有償プラグイン利用 | 
| Miro | SAML 2.0 | IdP | 不要 | |
| AWS Console | SAML 2.0 | IdP | 不要 | |
| Mattermost (Enterprise版) | SAML 2.0 | IdP | 不要 | |
| NextCloud | SAML 2.0 | IdP | 不要 | |
| GitLab | SAML 2.0 | IdP | 不要 | |
| Datadog | SAML 2.0 | IdP | 不要 | |
| PeerTube | OpenID Connect 1.0 | OP | 不要 | |
| NextAuth.js (Next.js用の認証ライブラリ) | OpenID Connect 1.0 | OP | 不要 | |
| AWS ALBのOIDC連携機能 | OpenID Connect 1.0 | OP | 不要 | |
| HENNGE | SAML 2.0 | IdP | 不要 | |
| NextSet | SAML 2.0 | IdP | 不要 | |
| SeciossLink | SAML 2.0 | IdP | 不要 | 
OIDC/SAML用の連携用ソフトウェアを使用すれば、前述のプロトコルに対応していないアプリと連携することもできます。
| サービス、ソフトウェア名 | 連携ソフトウェア | 連携プロトコル | ロール | カスタマイズ | 備考 | 
|---|---|---|---|---|---|
| JavaScriptアプリ(クラアントサイド) | JSアダプター | OpenID Connect 1.0 | OP | 不要 | |
| Apacheのバックで動作するアプリ | mod_auth_openidc | OpenID Connect 1.0 | OP | 不要 | |
| Apacheのバックで動作するアプリ | mod_auth_mellon | SAML 2.0 | OP | 不要 | |
| 任意のWebアプリ | OAuth2 Proxy | OpenID Connect 1.0 | OP | 不要 | 
以下のサービスのアカウントを使ったログイン(ソーシャルログイン)を実現することもできます。
| サービス、ソフトウェア名 | 連携プロトコル | ロール | カスタマイズ | 備考 | 
|---|---|---|---|---|
| Bitbucket | OAuth 2.0 | クライアント | 不要 | |
|  | OAuth 2.0 | クライアント | 不要 | |
| GitHub | OAuth 2.0 | クライアント | 不要 | |
| GitLab | OpenID Connect 1.0 | RP | 不要 | |
|  | OpenID Connect 1.0 | RP | 不要 | |
|  | OAuth 2.0 | クライアント | 不要 | |
| Microsoft | OAuth 2.0 | クライアント | 不要 | |
| OpenShift 3 | OAuth 2.0 | クライアント | 不要 | |
| OpenShift 4 | OAuth 2.0 | クライアント | 不要 | |
| PayPal | OpenID Connect 1.0 | RP | 不要 | |
| Stack Overflow | OAuth 2.0 | クライアント | 不要 | |
| X | OAuth 2.0 | クライアント | 不要 | |
|  | OAuth 2.0 | クライアント | 不要 | |
| LINE | OpenID Connect 1.0 | RP | 必要 | |
| Azure AD | SAML 2.0 | SP | 必要 | |
| ADFS | SAML 2.0 | SP | 必要 | 
以下のユーザーストレージと連携することもできます。
| サービス、ソフトウェア名 | 連携プロトコル | カスタマイズ | 備考 | 
|---|---|---|---|
| Active Directory | LDAP | 不要 | |
| Red Hat Directory Server | LDAP | 不要 | |
| Tivoli Directory Server | LDAP | 不要 | |
| Novel Directory | LDAP | 不要 | |
| その他LDAPサーバー | LDAP | 一部必要 | |
| 任意のRDBMS | SQL | 必要 | 
他にも多数のサービスやソフトウェアと連携することができます。
動作環境
Keycloakを高可用環境で稼働させる場合のシステム構成の為のサイジングのコンセプトが以下のページにまとめられています。
Keycloakのライセンス
Keycloakは、Apache 2.0ライセンスです。Apache License(アパッチ・ライセンス)のコードが使用されていることの明記を条件に、ソースコードの自由な改変と公開が認められています。
製品ダウンロード
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。
関連OSS
- 
 サポート対象 サポート対象OpenAMオープンエーエム。Web上でSSO(シングルサインオン)を実現するための技術。OpenSSOの後継となっています。 
- 
 サポート対象 サポート対象OAuth2 Proxyオーオーストゥプロキシー。アプリケーションの前段で認証と認可を外部に委譲するためのリバースプロキシーサーバーで、Go言語で実装されています。 
- 
 サポート対象 サポート対象midPointミッドポイント。従来の「ID管理」に「統制」の概念を加えたIDガバナンス&管理(=IGA)を実現するオープンソースソフトウェアです。 


 
          