マジセミドライブ

ウェビナー関連のニュースや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では、アプリケーションを保護するためにプロキシ使用も選択できます。

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

 

参考元サイト

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

この記事のタグ一覧

おすすめの記事

【AIツール実験室】チャットAI対抗「添削能力」選手権🏆

AIツール実験室

2023.12.27

【AIツール実験室】チャットAI対抗「添削能力」選手権🏆

各チャットAIの「添削能力」について比較確認をしています。 「ChatGPT4と同等の添削能力を発揮した無料チャットAI」にご注目ください。 また、 ChatGPTカスタマイズ機能「GPTs」を利用して作成した GPTs文章添削機能「添削師匠さん✍️」を紹介しています。 課金勢は試しに使ってみてください。

【IT用語解説】「 デジタルヒューマン 」とは😊

IT用語解説

2024.01.26

【IT用語解説】「 デジタルヒューマン 」とは😊

【IT用語解説】「 デジタルヒューマン 」として、「デジタルヒューマンとは何か?」「どのようにして作成できるのか?」「私たちの世界にどのような影響を与えているのか?」などについて、まとめています。

AIツール関連 記事リストポータル

AIツール

2023.10.05

AIツール関連 記事リストポータル

AI 関連の記事をまとめたポータルページです。