マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Keycloak

【OSS情報アーカイブ】Keycloak

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

「Keycloak」とは

「Keycloak」基本情報

■概要

Keycloak(キークローク)とは、シングルサインオン機能を提供するアクセス管理ソリューションです。

■基本説明

Keycloakは、WebアプリケーションとRESTfulWebサービス用のシングルサインオンソリューションです。「シングルサインオン認証フレームワーク」+「管理コンソール」でシングルサインオン環境を構築するための一通りの機能を提供します。

「OpenID Connect」「SAML 2.0」などの方式をサポートしており、「ユーザーフェデレーション」「IDブローカリング」「ソーシャルログイン」「ディレクトリサービス連携」などの高度な機能も利用できます。

Keycloakは「セキュリティをシンプルに構成し、アプリケーション開発者が組織に展開したアプリケーションとサービスを安全に保護できるようにすること」を目標にしています。

Java環境に組み込みやすいシンプルな構成で、ユーザー情報保管やユーザー認証処理について考慮は必要とせずに、ほぼコード記述はなく最小限の手間でアプリケーションやサービスに安全な認証機能を追加できます。

■主要開発元

Keycloakは、Red Hatの管理下にあるJBossコミュニティプロジェクトを中心として開発されています。

■経緯

Keycloakは、2014年に初版がリリースされています。

■オフィシャルサイト情報

オフィシャルサイト

→Keycloak

ライセンス情報

Keycloakのライセンスは「Apache License 2.0」です。

詳細について、こちらを参照ください。
→GitHub →keycloak/keycloak →License.html

動作環境

Keycloakは、Javaを実行可能な任意のオペレーティングシステムで動作します。

ダウンロード

→Keycloak →Downloads

■同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「OpenAM」など。

「Keycloak」のシングルサインオン機能

Keycloakは多くのシングルサインオン関連機能を提供します。

■シングルサインオン機能

Keycloakを利用した認証では、ユーザーは個々のアプリケーションに対してではなく、Keycloakに対して認証を実行します。

Keycloakを組み込んだアプリケーション側では「ログインフォーム」「ユーザー認証」「ユーザー情報保存」に関して処理する必要がありません。

ユーザーは一度Keycloakにログインすれば、別アプリケーションにアクセスするために再度ログインする必要はありません。

■シングルサインアウト機能

Keycloakはシングルサインアウトも提供します。

ユーザーは一度Keycloakに対するログアウトを実行すると、Keycloakを使用するすべてのアプリケーションからログアウトされます。

■OpenID認証機能

Keycloakは、IDプロバイダ「OpenID Connect」「SAML 2.0」を使用してユーザーを認証できます。

Keycloak管理コンソールを介してアイデンティティプロバイダを設定するだけで実施できます。

■ソーシャルログイン機能

Keycloakは、ソーシャルネットワークIDによるログインを有効化できます。

コードやアプリケーションへの変更なしで、追加したいソーシャルネットワーク設定を行うだけでソーシャルログインに対応できます。

例えば、Twitterの場合なら、Keycloak管理コンソールで、Twitterの「API Key」+「API Secret」を入力するだけで、ログインページに「Twitterでログイン」ボタンが出現します。

■ディレクトリサービス連携機能

Keycloakは、「LDAP」や「Active Directory」などのディレクトリサービスと連携できます。

独自プロバイダを実装することで、リレーショナルデータベースなどとも連携できます。

「Keycloak」のその他の主な機能

「Keycloak」のその他の主な機能

■セキュリティ機能

Keycloak認証サーバはネットワーク上の独立したサーバとして機能し、各アプリケーションは、このサーバを参照して保護されるように構成されます。

各アプリケーションは、ユーザー認証時に、アプリケーションからKeycloak認証サーバにリダイレクトし、ユーザーはそこで認証情報を入力します。

ユーザーはアプリケーションから完全に分離され、アプリケーションはユーザーの資格情報を見ることができないため、認証セキュリティを向上できます。

■アクセス制御機能

Keycloakは、きめ細やかな承認ポリシーをサポートしており、さまざまなアクセス制御メカニズムを組み合わせて利用できます。

Keycloakは、一連の管理UIとRESTful APIに基づいており、保護された「リソース」「スコープ」に対する権限を作成し、それらの権限を承認ポリシーに関連付け、アプリケーションやサービスで承認の決定を強制するために必要な手段を提供します。

サポートするアクセス制御メカニズム

・属性ベースアクセス制御
・役割ベースアクセス制御
・ユーザーベースアクセス制御
・コンテキストベースアクセス制御
・ルールベースアクセス制御—JavaScript、JBoss Drools
・時間ベースアクセス制御
・カスタムアクセス制御メカニズム—ポリシープロバイダサービスプロバイダインターフェース など

独自認証ポリシー定義

Keycloakでは、詳細な認証ポリシーを定義できます。

ロールベース認証が要件に適さない場合など、すべてのサービスに対する権限について必要なポリシーを正確に定義できます。

■管理者用「Keycloak管理コンソール」

管理者は「管理者コンソール」により、Keycloakサーバを集中管理できます。

設定可能項目

・各種機能の有効化/無効化設定
・アイデンティティブローカー設定
・ユーザーフェデレーション設定
・ユーザー権限設定
・ユーザーセッション設定 など

管理コンソールカスタマイズ

管理用のRESTful APIが豊富に用意されているため、管理コンソールの改修や独自構築が可能です。

→Keycloak →docs →Keycloak Admin REST API

■エンドユーザー用「アカウント管理コンソール」

ユーザーは「アカウント管理コンソール」で、自分のアカウントを管理できます。
・プロファイル更新
・パスワード変更
・二要素認証設定
・セッション管理
・アカウント履歴表示 など

他プロバイダーとのリンク設定

Keycloakサーバ側で「ソーシャルログイン」または「IDブローカー」を有効にしている場合、ユーザーは自分のアカウントを他のプロバイダーとリンクして、異なるIDプロバイダーと同じアカウントで認証できるようにすることもできます。

「Keycloak」サーバ

「Keycloak」サーバ

■概要

Keycloakサーバは実体として「Java EEのWebアプリケーション」として動作します。

セッション情報を管理し、シングルサインオン(SSO)を利用するアプリケーションからのアクセスに対して、Keycloakサーバが提供するログインページにリダイレクトします。

■動作モード

Keycloakは複数の動作モードに対応しています。

スタンドアロンモード

スタンドアロンモードは、Keycloakサーバインスタンスを1つだけ実行します。

クラスタ化された配置には使用できず、すべてのキャッシュは非分散型でローカル専用となります。

スタンドアローンモードのサーバがダウンした場合、ユーザーがログインできなくなるシングルポイント障害が発生する可能性があるため、本番環境での使用は推奨されません。

スタンドアロンクラスタモード

スタンドアロンクラスタモードは、クラスタ内でKeycloakを実行させるモードです。

Keycloakサーバインスタンスを実行する各マシンでKeycloakディストリビューションのコピーを動作させます。

このモードは最初は非常に簡単にデプロイできますが、設定を変更する場合には、各マシンの各ディストリビューションを修正する必要があるため、非常に面倒になるケースがあります。特に、大規模クラスタに対して適用する場合には、コストがかかり、エラーが発生する可能性が高まります。

ドメインクラスタモード

ドメインクラスタモードは、サーバ設定を一元管理して公開する方法です。

サーバ設定について保存および公開するための中心的な場所を提供することによって、クラスタ内の全ノードに対する一括変更処理を可能とします。

ドメインクラスタモードのセットアップは複雑になる場合がありますが、後々のメンテナンスコストを考慮すると、初期セットアップコストがかかったとしても有効な方策となります。

この機能は、Keycloakの派生元であるWildFly Application Serverに組み込まれています。

データセンター間レプリケーションモード

データセンター間レプリケーションモードは、複数のデータセンターにまたがったクラスタとしてKeycloakを実行する場合に使用します。

通常は、地理的に異なる地域にあるデータセンターサイトごとにKeycloakサーバクラスタを配置します。

「Keycloak」クライアントアダプタ

「Keycloak」クライアントアダプタ

■概要

Keycloakには、多くのプラットフォームやプログラミング言語で利用可能なクライアントアダプタが用意されています。

Keycloakクライアントアダプタは、Keycloakを使用してアプリケーションとサービスを保護するためのライブラリです。

■標準プロトコルサポート

Keycloakは標準プロトコルに基づいており、「OpenID Connect」「SAML 2.0」をサポートしています。

「OpenID Connect」とは

「OpenID Connect(OIDC)」は、OAuth 2.0を拡張した認証プロトコルです。

https://openid.net/connect/

「SAML 2.0」とは

SAML 2.0は、上記の「OpenID Connect」とは似た仕様ですが、歴史が長く成熟している認証プロトコルです。

https://wiki.oasis-open.org/security/FrontPage

■主なサポートプラットフォーム

OpenID Connect

・Java—JBoss EAP、WildFly、Tomcat、Spring Boot
・JavaScript(client-side)
・Node.js(server-side)

プログラミング言語

・C#
・Python

OS

・Android
・iOS

Webサーバ

・Apache HTTP Server

SAML(Security Assertion Markup Language)

・Java—JBoss EAP、WildFly、Tomcat、Jetty
・Apache HTTP Server

■プロキシサポート

Keycloakでは、アプリケーションを保護するためにプロキシ使用も選択できます。

これにより、アプリケーション改修をまったく必要とせずに、アプリケーションをより強固に保護できます。

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

おすすめの記事

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

「 2029年問題 」とは、高校でのデジタル教育改革により、新入社員と既存社員間でデジタルスキル格差が拡大する懸念を指します。企業は早急に対応が求められています。この格差は、企業競争力や業務効率にも、影響を及ぼす可能性があります。

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

「 VMWare 」の仮想化技術は、「ITインフラの効率化」に大きく貢献する技術ですが、Broadcomによる買収後のライセンス変更が大きな問題として注目されています。柔軟で慎重な契約見直しが今後の鍵となります。

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

経済産業省による「 生成AI 利活用ガイドブック 」は、企業やクリエイター向けに、安心して「生成AI」を利用するための、「指針」「実例」「注意点」を明示しています。「業務効率化」や「新しいアイデア創出」の支援を目的としています。