オープンソース

Keycloak〜SAMLにも対応したシングルサインオン〜

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

目次

Keycloakとは

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

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

Keycloakログイン画面

Keycloakログイン画面

Keycloakの動作環境

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

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

なお、公式なDockerイメージは配布されていません。しかし、JBossプロジェクトが配布しているJBoss/KeycloakのDockerイメージが公開されていて、Dockerコンテナ環境でも利用することができます。

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

例えば、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の特徴

Keycloakには、以下の特徴があります。

多くのアプリケーションでSSOを実現

シングルサインオン(SSO:Single Sign On)とは、一回の認証を行うだけで様々なシステムが、利用可能になる技術のことです。シングルサインオンの技術を活用することで、ユーザはその都度システムにログインしなくてよくなり、利便性が飛躍的に向上します。また、管理者はユーザ管理が非常に簡単になります。Keycloakは、多くのソフトウェアで使用されているSAMLやOIDC(OpenID Connect)、OAuth 2.0のプロトコルに対応しているため、多くのアプリケーションのSSOを実現できます。

Keycloakは、インストールした状態で、ユーザ名・パスワード認証、OTP認証、Kerberos認証などの様々な認証プロバイダを利用できるようになっています。また、Keycloakは、Javaの認証SPI(service provider interface)の機能を利用して、標準では満たしていない独自の認証プロバイダを作成することも可能です。

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

デージーネットでは、Keycloakを利用したシングルサインオンシステム構築の実績があります。Keycloakだけでは要件を満たせない場合には、OpenAMベースの製品を利用するなど、ケースに合わせて最適なソフトウェアをお勧めしています。

御見積はこちら

オープンソース専門IT企業技術満足度No.1

ソーシャル連携

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

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

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

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

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

パスワードレス認証

Keycloakは、スマートフォンなどを活用し、生体認証を使ったパスワードレス認証を行うことができます。WEBインタフェースから認証に関する設定が可能なため、プログラムを書かずに簡単にパスワードレス認証を実現することが可能です。つまり、Keycloakを認証の入り口として、多くのソフトウェアやサービスにパスワードレスでログインすることができるようになります。

Keycloakの認可方法

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

  • SAML

    SAML(Security Assertion Markup Language)とは、シングルサインオンで利用されるマークアップ言語/規格です。通常の認証の場合、ユーザが、システムやサービスと一対一で認証が行われます。Keycloakで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とは、複数のWebアプリやサービスを連携して動作させることができる仕組みです。アプリケーションの連動にはAPIを利用します。OAuthを利用することで、IDやパスワードを入力することなく、アプリケーション間の連動が可能となります。OAuth 2.0では、クライアントは、リソースオーナーにアクセストークンを発行してもらい認証を受けます。アクセストークンには、権限の範囲と期間が設定されていおり、アプリケーションやサービスに渡すことで、認証を行います。OAuth 2.0は認証だけを行うため、ユーザの個別情報を伝達する仕組みがありません。

  • Kerberos認証方式

    Kerberos認証方式では、Active DirectoryとKeycloakを組み合わせて認証を行い、チャットシステムなどのウェブサービスとKeycloakをOpenID Connectにて連携することができます。

  • WebAuthn

    WebAuthnとは、WEBアプリケーションで認証(Authentication) を行うための規格です。ユーザーがアプリケーションやWebサービスにログインする際、パスワードの入力を必要とせずに認証を行うパスワードレス認証を実装することができます。FIDO2(Fast Identity Online 2)認証フレームワークに基づいて構築されており、公開鍵暗号化を使用して安全で信頼性の高い認証プロセスを作成します。Keycloakで、WebAuthnを動作させるためには、HTTPSでのアクセスが必須となります。

Keycloakの機能

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

Keycloakの概要画面

レルム管理

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

Keycloakのレルム画面

レルム毎に設定できる主な項目は次の通りです。

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

クライアント管理

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

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

アプリケーション毎に、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はより高機能

OpenAMは非常に高機能であるのに対し、Keycloakでは対応できない機能がいくつかあります。ただし、その分Keycloakはシンプルで、かつリーズナブルであるため、OpenAMに比べて導入のハードルが低いという特徴があります。なお、下記の記事では、OpenAMとKeycloak、IDaaSの特徴についてより詳しく比較しています。

Keycloakと顔認証「FaceAuth」

Keycloakのシングルサインオンの機能を利用したソフトウェアに、顔認証システムのFaceAuth(フェイスオース)があります。

顔認証システムとは、ユーザ認証を行う利用者が、本人であることを認識する際に、カメラを利用して顔の画像を撮影することで事前に登録された顔写真のデータと照合を行い、本人確認を行うことができるシステムをいいます。IDとパスワードを使用した「パスワード認証」方式と比べて、ユーザになりすました部外者がログインするリスクが低い、パスワードの入力・管理の手間が省け利便性が高い、などといったメリットがあります。

FaceAuth顔認証イメージ

FaceAuth顔認証イメージ

そして、FaceAuthの最大の特徴は、様々なシステムやサービスで顔認証の利用が可能になるという点にあります。通常、システムやサービスで顔認証を導入するには、その利用するサービス自体が顔認証に対応している必要があります。しかし、FaceAuthは様々な認証方法に対応しているため、システムやサービス自体が顔認証に対応していなくても、顔認証を導入できるようになります。また、FaceAuthはPCやスマホに搭載されているカメラを利用して顔認証を行うことができるため、専用の認証機器を用意する必要がなく、初期費用も抑えて顔認証の導入が可能になります。

FaceAuthは、Keycloakのシングルサインオンの機能を利用することで、複数のシステムを連携させ、顔認証でログインすることが可能となります。FaceAuthで一度ログインしてしまえば、その他のシステムに自動でログインすることができるので、管理者やユーザーがIDやパスワードをシステムごとに管理することが不要になり手間がなくなります。

Keycloakと連携可能なサービス/ソフトウェア

Keycloakは、SAMLやOpenID Connectに対応したソフトウェアやサービスと連携が可能です。ここでは、デージーネットで検証済みのKeycloakと連携可能なソフトウェアやサービスを紹介します。

AWSマネージメントコンソール

Keycloakは、AWSマネージメントコンソールと、SAMLを使って連携することができます。今回の検証ではEC2の管理権限を付与し、EC2の管理画面を参照可能にしました。

Office365

Keycloakでは、SAMLを使ってOffice365とID連携をすることができます。ただし、組織内のActiveDirectoryのデータとID連携を行うためには、Azure ADと組織内のActiveDirectoryが連携し、さらにOffice365とAzure ADが連携する必要があります。また、IdPから渡されるユーザ情報やカスタムドメインに設定されている情報には、いくつかの制約があり、設定は比較的難易度が高くなっています。

G Suite

Keycloakでは、SAMLを使ってG Suiteとの連携が可能です。G SuiteとのID連携は認証のみです。ユーザ情報は個別にG Suiteに登録する必要があります。また、G Suiteに登録されたユーザのメールアドレスは、Keycloak側の情報と同一でなければなりません。

Slack

Keycloakは、SlackとSAMLを使ってID連携をすることができます。Slackサービスは、プラスプランまたはEnterprise Gridプランの契約が必要です。

LINE WORKS

Keycloakは、LINE WORKSとSAMLを使ってID連携をすることができます。LINE WORKSは、ライトプラン以上の契約が必要です。LINE WORKSのSSOは、認証のみであるため事前のユーザ登録が必要です。

Redmine 3.X

Redmineは、OSSのプロジェクト管理ソフトウェアです。Redmineの標準ではSSOの機能は存在しませんが、Redmine 3系では、omniauth_samlプラグインを利用することで、SAMLを使ってKeycloakとID連携が可能です。

なお、Redmine 3系には、OpenID Connectのプラグイン(redmin_openid_connect)も存在します。しかし、不具合があり、KeycloakとOpenID Connectでの連携はできません。また、Redmine 4系にはプラグインがなく、Keycloakとの連携はできません。

Keycloakの課題

課題点として、以下の点が挙げられます。

  • 対象外のプロトコルへの対応

    KeycloakはSAMLやOIDC等のシングルサインオンには対応していますが、アプリケーションが独自で実装している認証方式に対応する術がありません。つまり、よくあるWEBフォームでのログインインターフェースとは連携ができないため、アプリケーションの書き換えが必須になります。

  • アプリケーションの実装の問題

    Keycloakの問題ではなく、シングルサインオンに組み込むアプリケーション側の実装によって問題が発生する場合もあります。しかし、Keycloakを使ってシングルサインオンを実現するにあたっては、アプリケーションとの連携が必須ということもあり、必ずアプリケーションとの親和性を確かめておく必要があります。

これらの条件から、既存の環境をシングルサインオン化するには、Keycloakの機能不足は否めません。しかし、他のシングルサインオン関連のソフトウェアと比較すると、非常に設定がわかりやすいソフトウェアであるため、新しく構築するシステムであれば、Keycloakを利用するメリットは大いにあります。

上記の条件を踏まえて、新たなシステムを構築する際は、SAMLやOIDCに対応したソフトウェアを選定し、開発するアプリケーションもクライアントアダプターやmod_auth_oidc等を利用することで、Keycloakでシングルサインオンを実現することができます。

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

デージーネットでは、シングルサインオンシステムの構築とサポートのサービスを提供しています。デージーネットで構築サービスを提供したお客様には、導入後支援サービスとして、Open Smart Assistanceを提供しています。Open Smart Assistanceサービスでは、「作ってから使い終わるまで」をコンセプトに、導入後も継続して運用をサポートしています。これは、ソフトウェア単体のサポートではなく、LinuxなどOSSを使ったシステム全体が安定稼働するためのサポートです。OSSやソフトウェアの使い方に関するQ&Aの受付や障害対応、ソフトウェアの脆弱性などのセキュリティ情報の提供を行っています。

デモのお申込み

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

デモをご希望の方

デモの申し込みイメージ

「情報の一覧」

Keycloak調査報告書

Keycloak調査報告書

Keycloakは、シングルサインオンを実現するための認証プロバイダです。本調査報告書では、インストールの方法や詳しい使い方、Rocket.chatとApache HTTP Serverのoidcモジュールとの連携方法を調査した結果を解説しています。

Keycloakサービス連携調査報告書

Keycloak調査報告書

Keycloakを用いて、複数のアプリケーション・サービスのシングルサインオンを実現するための手順の調査報告書です本書では、RedmineやAWS、Office365、Slack等のサービスでSSOが実現できるかを確認しました。

KeycloakによるKerberos認証調査報告書

KeycloakによるKerberos認証調査報告書

本書では、シングルサインオンを提供するサーバとしてKeycloakを使用し、Kerberos認証によりユーザ名やパスワードの入力なしでウェブサービスにログインできるようにする手順を記述しています。ログインするウェブサービスの例としてはRocket.Chatを使用しました。

LDAPサーバ管理UI調査報告書

LDAPサーバ管理UI調査報告書

LDAPとは、ディレクトリサービスのための標準プロトコルです。LDAPを使い、ディレクトリサービスを提供するソフトウェアやシステムを、LDAPサーバと呼びます。本書は、OSSのLDAPサーバの管理UIの現状についてまとめたものです。

パスワードレス認証調査報告書

パスワードレス認証調査報告書

パスワードレス認証とは、指紋や顔認証、デバイス認証など、ログインID・パスワードを使わない方法で認証を行うことを言います。本書は、パスワードレス認証方式であるFIDO2やPasskeyについて調査した内容をまとめたものです。

Keycloakを利用したシングルサインオン認証サーバの導入事例

Keycloak構築事例

お客様は、システムごとにアカウントを管理していたため、管理者だけでなくユーザにも管理の手間がかかっていました。この記事は、弊社でOSSのKeycloakを利用したシングルサインオン(SSO)システムを導入した事例です。

管理の負担を軽減したKeycloakによるシングルサインオンサーバ構築事例

Keycloakシングルサインオンサーバ構築事例

お客様は、従業員が利用するポータルサイトやeラーニングシステムなど複数のシステムを利用していました。しかし、従業員の入れ替わりが激しく、IdaaS等の従量課金制のサービスでは、費用面で導入が難しいという課題がありました。そこで、OSSのKeycloakを利用したシングルサインオンサーバを導入しました。

多要素認証にTOTPを利用したKeycloakサーバ導入事例

多要素認証にTOTPを利用したKeycloak導入事例

今回は、シングルサインオンのKeycloakに多要素認証を導入した事例です。お客様は、ID/パスワード管理だけではセキュリティ面で不安ということで、多要素認証の導入を検討していました。

シングルサインオン(SSO)を構築するおすすめOSSとIDaaSの機能比較

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

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

シングルサインオンの仕組みと選び方

シングルサインオンの仕組みと選び方の画像

ここでは、シングルサインオンの仕組みを説明し、シングルサインオンを実現するためにソフトウェアやサービスを選定する時の選び方と検討のポイントについて説明します。

LDAPデータ管理のOSS比較 7選

LDAPデータ管理のOSS比較画像

LDAPサーバは、企業内では特にユーザ情報の管理や認証の基盤として使用されています。ここでは、LDAPサーバのデータを管理するためのOSSを紹介します。

注目の顔認証で認証の課題を解決〜FaceAuth〜

FaceAuthの画像

FaceAuthは、顔認証に対応していないサービスでも導入できる顔認証のソフトウェアです。PCやスマホに搭載しているカメラを利用して顔認証ができるため、初期費用を抑えて導入することが可能です。このページでは、顔認証システムの導入におすすめのFaceAuthについて紹介します。

OpenAM〜シングルサインオン〜

OpenAMの画像

OpenAMとは、シングルサインオン(SSO)を実現するためのソフトウェアです。現在のOpenAMはオープンソースとして提供されていませんが、いくつかの商用サポートベンダーによって、OpenAMの公開とサポートは継続されています。

OSS情報

Keycloak〜SAMLにも対応したシングルサインオン〜
Keycloakは、複数のサービスへのサインインを一度で行うことができるOSSです。ここでは特徴や機能について紹介します。
KeyclockのLDAPデータ管理
Keycloakは、シングルサインオンの認証バックエンドとしてLDAPを利用することができます。ここでは、LDAPデータ管理ツールとして利用する際の特徴を紹介します。
FIDOパスワードレス認証をKeycloakで実現する方法
パスワードレス認証とは、パスワード以外の情報を利用してシステムにログインを行う認証方式です。ここでは、Keycloakで実現するパスワードレス認証を紹介します。

Keycloak〜SAMLにも対応したシングルサインオン〜の先頭へ