オープンソース

サーバ構築のデージーネットTOP > OSS情報 > OSS紹介 > Keycloak〜OpenAMに替わるシングルサインオンのOSS〜

サーバ構築のデージーネットTOP > OSS情報 > シングルサインオン > Keycloak〜OpenAMに替わるシングルサインオンのOSS〜

Keycloak〜OpenAMに替わるシングルサインオンのOSS〜

最近、企業が多くのクラウドサービスを利用するようになっています。様々なサービスプロバイダが提供するクラウドサービスでは、それぞれに独自のユーザ名とパスワードによる認証があります。そのため、ユーザは多くのパスワードを使い分けなければなりません。このような状況の中、シングルサインオンの仕組みやソフトウェアが注目されています。サービスの中には、シングルサインオンの仕組みを利用して、IdPと呼ばれるIDプロバイダと連携できるものも出てきました。
このIdPに利用できるソフトウェアとして注目されているのが、Keycloakです。ここでは、Keycloakの機能や特徴について解説します。

Keycloakとは

Keycloakは、様々なアプリケーションやサービスへのサインインを一度でおこなうことができるオープンソースソフトウェアです。KeycloakはRedhatにより開発され、Apache License version 2ライセンスの下で公開されています。Keycloakは、OpenAMなどの他のSSOのオープンソースソフトウェアと比較すると非常に新しいソフトウェアです。

Keycloakは、OpenID ConnectやSAMLなどのシングルサインオンのプロトコルに対応し、IdPとして利用することができます。Keycloakでは、認証バックエンドとしてActiveDirectoryを利用できます。そのため、KeycloakをIdPとして導入することで、Windowsログインで使っているIDとパスワードをそのままインターネット上のサービスでも利用できるようになります。

Keycloakログイン画面

Keycloakの特徴

シングルサインオンと認証の仕組み

シングルサインオン(SSO:Single Sign On)とは、一回の認証を行うだけで様々なシステムが、利用可能になる技術のことです。Keycloakは、多くのソフトウェアで使用されているSAMLやOIDC(OpenID Connect)、OAuth 2.0のプロトコルに対応しているため、多くのアプリケーションのSSOを実現できます。

例えば、SAMLを使ってクラウドサービスと連携する場合には、Keycloakは次のように動作して認証を行います。

  1. ユーザがサービスにアクセスします。
  2. サービスプロバイダは、認証済みかどうかを調べ、認証していなければKeycloakのURLを調べます。
  3. サービスプロバイダは、ユーザにKeycloakのURLを返送します。
  4. ユーザのブラウザは、KeycloakのURLに自動的にリダイレクトされます。
  5. ユーザは、Keycloakに認証を依頼します。
  6. Keycloakは、ユーザの認証状況を調べ、まだ認証済みでなければ認証処理を行います。
  7. 認証が成功するとKeycloakは、認証トークンをユーザに返送します。
  8. ユーザのブラウザは、サービスプロバイダに自動的にリダイレクトされます。
  9. ユーザからサービスプロバイダに、Keycloakが発行した認証トークンが送られます。
  10. サービスプロバイダは、認証トークンを検査します。
  11. 認証トークンが正しければ、ユーザはサービスを利用できるようになります。

このフローからも分るように、サービスプロバイダと連携してKeycloakは認証の処理のみを行います。認証の処理では、ソーシャル連携やActiveDirectory/LDAPとの連携を行うこともできます。

図:Keycloakの認証

ソーシャル連携

Keycloakは、ソーシャルサービスの認証機構を利用することもできます。つまりGoogleやTwitter、Facebookなどの認証を利用してサインインを実装することができます。対応しているプロバイダは次の通りです。

  • GitHub
  • Facebook
  • Google
  • LinkedIn
  • Microsoft
  • PayPal
  • Twitter
  • OpenShift v3
  • Gitlab
  • Instagram
  • BitBucket
  • StackOverflow

またSAMLやOpenID connectを実装しているプロバイダであれば、連携が可能です。

アカウント管理システムとの連携

Keyclockは、既に存在するActiveDirectory/LDAPのユーザ情報を利用できます。ActiveDirectory/LDAPを使って認証するだけでなく、登録されているユーザ情報を別のアプリケーションに渡すこともできます。

Keycloakの動作環境

Keycloakは次の環境で動作します。

  • Java 8 JDK
  • zip or gzip or tar
  • MySQL/PostgreSQL

Keycloakの認可方法

Keycloakは、次のような仕組みに対応しています。

  • SAML

    SAML(Security Assertion Markup Language)とは、シングルサインオンで利用されるマークアップ言語/規格です。通常の認証の場合、ユーザが、システムやサービスと一対一で認証が行われます。SAMLを利用した場合は、システムやサービス(SP)と認証プロバイダ(IdP)を介して認証が行われます。

  • OpenID Connect

    OpenID Connect(OIDC)は、OAuthと呼ばれる認証方式にユーザのID情報を載せられるようにした規格です。OpenID Connectでは、トークンと呼ばれる記号を使い、アクセスの認可やID情報のやりとりを行うのが特徴です。OAuthは、TwitterなどのSNS認証でよく利用される方式であり、昨今の開発者には馴染みのある規格です。OpenID Connectでは、サービスやアプリケーションのことをRelying Party(RP)と呼びます。このRP側でOIDCは比較的実装しやすく、今後広まっていく可能性があるプロトコルです。

  • OAuth 2.0

    OAuth 2.0では、クライアントは、リソースオーナーにアクセストークンを発行してもらい認証を受けます。アクセストークンには、権限の範囲と期間が設定されていおり、アプリケーションやサービスに渡すことで、認証を行います。OAuth 2.0は認証だけを行うため、ユーザの個別情報を伝達する仕組みがありません。

Keycloakの機能

Keycloakの主な機能について説明します。

Keycloakの概要画面

レルム管理

Keycloakでは、ユーザやロールなどを含むSSOに関わる設定をレルムという単位で管理することができます。レルムを分割することで、組織毎に利用可能なアプリケーションを分けたり、別のユーザDBを参照することができます。レルム毎に設定できる主な項目は次の通りです。

Keycloakのレルム画面

  • ユーザ自身によるログイン情報の登録のON/OFF
  • パスワード忘れ時の再発行機能のON/OFF
  • 初回ログイン時にEメールで本人確認を行うか
  • Eメールアドレスでのログインを許可するか
  • WEBインタフェースのテーマ
  • 言語設定
  • セッションのタイムアウト時間
  • ブルートフォースアタックの検知とブロック時間の設定
  • SAML/OIDCクライアントの管理
  • ロール管理
  • アイデンティティプロバイダ連携
  • ユーザフェデレーション
  • ローカルユーザ・グループ管理

クライアント管理

Keycloakは、SAMLやOIDCでの認証設定を、クライアントという単位で管理します。クライアントの設定毎に、様々な設定が可能です。

  • SAML/OIDCどちらを利用するか
  • アプリケーションが利用する認証エンドポイント
  • SSL関連の設定
  • Keycloakが持つ属性とアプリケーションに渡す属性のマッピング
  • ロール情報

アプリケーション毎に、クライアントの設定を行うことで、柔軟にSSOを実現することができます。

クライアントアダプタ

Keycloakプロジェクトでは、Keycloakと連携するためのプログラムライブラリを、クライアントアダプタとして配布しています。クライアントアダプタを使うことで、開発ソフトウェアをKeycloakと連携させることができます。クライアントアダプタとして公開されている主な環境は次の通りです。

  • Java
  • Jetty
  • JBOSS
  • Spring
  • WildFly
  • Javascript
  • Tomcat
  • NodeJS

アプリケーションにKeycloakのクライアントアダプタを組み込めば、シングルサインオン対応にすることができます。

図:アプリケーションとKeycloak

また、プロキシサーバにKeycloakのクライアントアダプタを組むことでも、シングルサインオンを実現することができます。

図:プロキシサーバとKeycloak

ユーザフェデレーション

Keycloakには、既存のユーザDBと認証情報を統合するためのフェデレーション機能があります。ユーザフェデレーション機能は、LDAPまたはKerberosに対応しています。なお、Keycloakの内部DBにユーザやグループを作成することも可能です。

監査管理

Keycloakは、ユーザのセッションや、ログインなどのイベントを管理することができます。例として次のことが可能です。

  • ユーザのセッションを強制的に切断する
  • ログインしたユーザのログを参照する

この機能を利用することで、不正なユーザのアクセスを切断したり、怪しいユーザの動向を探ることができます。

KeycloakとOpenAM

Keycloakは、OpenAMと比べて非常にシンプルなソフトウェアです。

コミュニティの活動と将来性

OpenAMは、現在は商用ソフトウェアとして提供されています。そのため、オープンソース版の開発は行われていません。日本国内では、いくつかのベンダーが引き続きオープンソース版を元にサポートを提供しています。しかし、このような状態がいつまで続くのかは未知数です。

それに対して、KeycloakはRedHatが開発を行っているオープンソースソフトウェアで、コミュニティも活発に活動しています。Keycloakは、まだOpenAMに比べると機能が少ないですが、将来性を考えると安心して利用することができます。

機能の比較

OpenAMは非常に高機能です。そのため、Keycloakでは対応できない機能があります。

機能 Keycloak OpenAM 備考
エージェント型認証 Keycloakではクライアントアダプタ
プロキシ型認証
SAML
OpenID Conenct
OAuth
代理認証 ×
SNS連携
LDAP連携
ActiveDirectory連携
OTP認証
多要素認証
アダプティブ認証 ×
デバイスプリント認証 ×
ユーザによるアカウント管理
ユーザによるパスワード管理
アクセス制御 OpenAMはより高機能

Keycloakのインストール

Keycloak調査報告書インストールの画像

インストール方法や操作方法など詳しい情報は、「Keycloak調査報告書」からダウンロードすることができます。

デージーネットの取り組み

デージーネットは、ISPのシステム構築などで、システムの二重化、認証サーバの構築やサポートの実績を数多く持っています。デージーネットでは、Keycloakを使ったシングルサインオンシステムの構築とサポートのサービスを提供しています。Keycloakだけでは要件を満たせない場合には、OpenAMベースの製品を利用するなど、ケースに合わせて最適なソフトウェアをお勧めしています。

Keycloak〜OpenAMに替わるシングルサインオンのOSS〜「情報の一覧」

OpenAM〜シングルサインオン(SSO)を実現するOSS〜

OpenAMの画像

OpenAMとは、シングルサインオン(SSO)を実現することのできるオープンソースソフトウェアです。OpenAMは、Sun Microsystemsが開発した製品をOpenSSOとしてオープンソース化したものです。

シングルサインオンを実現するおすすめOSSとIDaaSの機能比較

シングルサインオンを実現するおすすめOSSとIDaaSの機能比較の画像

クラウド上のサービスを利用する機会が増加したことにより、最近になってシングルサインオンが再注目されています。ここでは、主な選定のポイントについて解説します。

Keycloak調査報告書

Keycloak調査報告書インストールの画像

Keycloakは、シングルサインオンを実現するための認証プロバイダです。SAMLとOpenID Connectに対応するソフトウェアと連携ができます。本調査報告書では、Rocket.chatとApache HTTP Serverのoidcモジュールとの連携方法を調査した結果を解説しています。

デモのお申込み

もっと使い方が知りたい方へ
Keycloakの操作方法や操作性をデモにてご確認いただけます。使い方のイメージを把握したい、使えるか判断したい場合にご活用下さい。Keycloakのデモをご希望の方は、下記よりお申込みいただけます。


デモをご希望の方


Keycloak〜OpenAMに替わるシングルサインオンのOSS〜の先頭へ