マジセミドライブ

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

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

 

参考元サイト

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

この記事のタグ一覧

おすすめの記事

経営活動に活用できる 原価管理 を実現するには? 〜製造業の現実的な課題に向き合い、現場視点から改善する原価管理手法の必達プロセスをご紹介〜

ウェビナーまとめ

2024.05.15

経営活動に活用できる 原価管理 を実現するには? 〜製造業の現実的な課題に向き合い、現場視点から改善する原価管理手法の必達プロセスをご紹介〜

2024年3月12日に三菱電機ITソリューションズ株式会社とアットストリームパートナーズ合同会社の共催で、組立加工製造業向けのセミナー「なぜか高くなる原価を管理する 不確実性の時代を乗り切るためのコスト戦略とは」が開催されました。本セミナーでは、製造業における原価管理の現状と改善手法について深く掘り下げ、経営活動への具体的な活用方法を提示しました。今回は、その講演の要点をお伝えします。

【OSS情報】WebベースAPI開発スイート「 Hoppscotch 」🌐

OSS情報

2024.07.04

【OSS情報】WebベースAPI開発スイート「 Hoppscotch 」🌐

「 Hoppscotch 」は、オープンソースのAPI開発エコシステムで、使いやすさとアクセシビリティを重視した軽量なWebベースのスイートです。無料版と有料版があり、PostmanやInsomniaの代替として利用可能です。

【OSS情報】LLMトレーニング用ライブラリ「 GPT-NeoX 」📚

OSS情報

2024.07.18

【OSS情報】LLMトレーニング用ライブラリ「 GPT-NeoX 」📚

「 GPT-NeoX 」は、GPU上で大規模言語モデル(LLM)を効率的にトレーニングするためのライブラリです。NVIDIAのモデルを基に独自の最適化が加えられ、オートレグレッシブ言語モデルのトレーニング手法を集約しています。