-
サーバ構築のデージーネットTOP
-
OSS情報
-
OSS紹介
-
Keycloak〜シングルサインオンを実現する注目のOSS〜
-
サーバ構築のデージーネットTOP
-
OSS情報
-
シングルサインオン
-
Keycloak〜シングルサインオンを実現する注目のOSS〜
Keycloak〜シングルサインオンを実現する注目のOSS〜
最近は企業内で複数のクラウドサービスを利用することが増え、サービスにログインするための認証情報(ユーザ名・パスワード)をユーザが使い分けなければならない機会が多くなっています。こうした状況の中、一部のクラウドサービスではシングルサインオンの仕組みを利用して、IdP(IDプロバイダ)と連携できるものも出てきました。このIdPとして現在注目されているソフトウェアが、Keycloakです。ここでは、Keycloakの機能や特徴について解説します。
- +
目次
Keycloakとは
Keycloakログイン画面
Keycloak(キークローク)は、様々なアプリケーションやサービスへのサインインを一度で行うことができるオープンソースソフトウェアです。Redhatにより開発され、Apache License version 2ライセンスの下で公開されています。OpenAMなどの他のSSOのオープンソースソフトウェアと比較すると、Keycloakは非常に新しいソフトウェアです。
Keycloakは、OpenID ConnectやSAMLなどのシングルサインオンのプロトコルに対応し、IdP(認証プロバイダ)として利用することができます。また、認証バックエンドとしてActiveDirectoryを利用できます。つまり、KeycloakをIdPとして導入することで、Windowsログインで使っているIDとパスワードをそのままインターネット上のサービスでも利用できるようになります。
Keycloakの資料をダウンロードする
Keycloakの動作環境
Keycloakは次の環境で動作します。
なお、公式なDockerイメージは配布されていません。しかし、JBossプロジェクトが配布しているJBoss/KeycloakのDockerイメージが公開されていて、Dockerコンテナ環境でも利用することができます。
シングルサインオンと認証の仕組み
例えば、SAMLを使ってクラウドサービスと連携する場合には、Keycloakは次のように動作して認証を行います。
- ユーザはサービスにアクセスする
- サービスプロバイダは認証済みかどうか調べ、未認証であればKeycloakのURLを調べる
- サービスプロバイダがユーザにKeycloakのURLを返送する
- ユーザのブラウザはKeycloakのURLに自動的にリダイレクトされる
- ユーザはKeycloakに認証を依頼する
- Keycloakはユーザの認証状況を調べ、未認証であれば認証処理を行う
- 認証が成功すると、Keycloakは認証トークンをユーザに返送する
- ユーザのブラウザはサービスプロバイダに自動的にリダイレクトされる
- ユーザからサービスプロバイダに、Keycloakが発行した認証トークンが送られる
- サービスプロバイダは認証トークンを検査する
- 認証トークンが正しければユーザはサービスを利用できる
このフローからも分るように、Keycloakはサービスプロバイダと連携して認証の処理のみを行います。認証の処理では、ソーシャル連携やActiveDirectory/LDAPとの連携を行うこともできます。
Keycloakの資料をダウンロードする
Keycloakの特徴
Keycloakには、以下の特徴があります。
多くのアプリケーションでSSOを実現
シングルサインオン(SSO:Single Sign On)とは、一回の認証を行うだけで様々なシステムが利用可能になる技術のことです。シングルサインオンの技術を活用することで、ユーザはその都度システムにログインしなくてよくなり、利便性が飛躍的に向上します。また、ユーザ管理が非常に簡単になり、管理者の負担も軽減されます。
Keycloakは、多くのソフトウェアで使用されている、SAMLやOIDC(OpenID Connect)、OAuth 2.0などの認証プロトコルに対応しており、多様なアプリケーションでSSOを実現することができます。またKeycloakは、インストールした状態で、ユーザ名/パスワード認証、OTP(ワンタイムパスワード)認証、Kerberos認証などの、様々な認証プロバイダを利用できるようになっています。さらに、Javaの認証SPI(Service Provider Interface)の機能を利用して、標準では満たしていない独自の認証プロバイダを作成できるのもKeycloakの特徴です。
Keycloakを利用した認証システムの構築お見積はこちら
ソーシャル連携
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を使って認証するだけでなく、登録されているユーザ情報を別のアプリケーションに渡すこともできます。
「KeyclockのLDAPデータ管理」へ
パスワードレス認証
Keycloakは、スマートフォンなどを活用し、生体認証を使ったパスワードレス認証を行うことができます。WEBインタフェースから認証に関する設定が可能なため、プログラムを書かずに簡単にパスワードレス認証を実現することが可能です。つまり、Keycloakを認証の入り口として、多くのソフトウェアやサービスにパスワードレスでログインすることができるようになります。
「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にて連携することができます。
「KeycloakによるKerberos認証調査報告書」へ
- WebAuthn
WebAuthnとは、WEBアプリケーションで認証(Authentication) を行うための規格です。ユーザーがアプリケーションやWebサービスにログインする際、パスワードの入力を必要とせずに認証を行うパスワードレス認証を実装することができます。FIDO2(Fast Identity Online 2)認証フレームワークに基づいて構築されており、公開鍵暗号化を使用して安全で信頼性の高い認証プロセスを作成します。Keycloakで、WebAuthnを動作させるためには、HTTPSでのアクセスが必須となります。
「パスワードレス認証調査報告書」へ
Keycloakの機能
Keycloakの主な機能について説明します。
レルム管理
Keycloakでは、ユーザやロールなどを含むSSOに関わる設定をレルムという単位で管理することができます。レルムを分割することで、組織毎に利用可能なアプリケーションを分けたり、別のユーザDBを参照することができます。
レルム毎に設定できる主な項目は次の通りです。
- ユーザ自身によるログイン情報の登録のON/OFF
- パスワード忘れ時の再発行機能のON/OFF
- 初回ログイン時にEメールで本人確認を行うか
- Eメールアドレスでのログインを許可するか
- WEBインタフェースのテーマ
- 言語設定
- セッションのタイムアウト時間
- ブルートフォースアタックの検知とブロック時間の設定
- SAML/OIDCクライアントの管理
- ロール管理
- アイデンティティプロバイダ連携
- ユーザフェデレーション
- ローカルユーザ・グループ管理
クライアント管理
Keycloakは、SAMLやOIDCでの認証設定を、クライアントという単位で管理します。クライアントの設定毎に、様々な設定が可能です。
- SAML/OIDCどちらを利用するか
- アプリケーションが利用する認証エンドポイント
- SSL関連の設定
- Keycloakが持つ属性とアプリケーションに渡す属性のマッピング
- ロール情報
アプリケーション毎に、Keycloakでクライアントの設定を行うことで、柔軟にSSOを実現することができます。
クライアントアダプタ
Keycloakプロジェクトでは、Keycloakと連携するためのプログラムライブラリを、クライアントアダプタとして配布しています。クライアントアダプタを使うことで、開発ソフトウェアをKeycloakと連携させることができます。クライアントアダプタとして公開されている主な環境は次の通りです。
アプリケーションにKeycloakのクライアントアダプタを組み込めば、シングルサインオン対応にすることができます。
また、プロキシサーバにKeycloakのクライアントアダプタを組むことでも、シングルサインオンを実現することができます。
ユーザフェデレーション
Keycloakには、既存のユーザDBと認証情報を統合するためのフェデレーション機能があります。ユーザフェデレーション機能は、LDAPまたはKerberosに対応しています。なお、Keycloakの内部DBにユーザやグループを作成することも可能です。
監査管理
Keycloakは、ユーザのセッションや、ログインなどのイベントを管理することができます。例として次のことが可能です。
- ユーザのセッションを強制的に切断する
- ログインしたユーザのログを参照する
この機能を利用することで、不正なユーザのアクセスを切断したり、怪しいユーザの動向を探ることができます。
KeycloakとOpenAMの比較
Keycloakと同じくシングルサインオンを実現するソフトウェアとしてOpenAMがあります。KeycloakはOpenAMと比べて非常にシンプルなソフトウェアです。ここでは、両者の特徴を比較します。
コミュニティの活動と将来性
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の特徴についてより詳しく比較しています。
「シングルサインオン(SSO)を構築するおすすめOSSとIDaaSの機能比較」へ
Keycloakと顔認証「FaceAuth」
Keycloakのシングルサインオンの機能を利用したソフトウェアに、顔認証システムのFaceAuth(フェイスオース)があります。
顔認証システムとは、ユーザ認証を行う利用者が、本人であることを認識する際に、カメラを利用して顔の画像を撮影することで事前に登録された顔写真のデータと照合を行い、本人確認を行うことができるシステムをいいます。IDとパスワードを使用した「パスワード認証」方式と比べて、ユーザになりすました部外者がログインするリスクが低い、パスワードの入力・管理の手間が省け利便性が高い、などといったメリットがあります。
FaceAuth顔認証イメージ
そして、FaceAuthの最大の特徴は、様々なシステムやサービスで顔認証の利用が可能になるという点にあります。通常、システムやサービスで顔認証を導入するには、その利用するサービス自体が顔認証に対応している必要があります。しかし、FaceAuthは様々な認証方法に対応しているため、システムやサービス自体が顔認証に対応していなくても、顔認証を導入できるようになります。また、FaceAuthはPCやスマホに搭載されているカメラを利用して顔認証を行うことができるため、専用の認証機器を用意する必要がなく、初期費用も抑えて顔認証の導入が可能になります。
FaceAuthは、Keycloakのシングルサインオンの機能を利用することで、複数のシステムを連携させ、顔認証でログインすることが可能となります。FaceAuthで一度ログインしてしまえば、その他のシステムに自動でログインすることができるので、管理者やユーザーがIDやパスワードをシステムごとに管理することが不要になり手間がなくなります。
FaceAuthの詳細情報へ
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の課題点
課題点として、以下の点が挙げられます。
- 対象外のプロトコルへの対応
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だけでは要件を満たせない場合には、OpenAMベースの製品を利用するなど、ケースに合わせて最適なソフトウェアをお勧めしています。
デモのお申込み
もっと使い方が知りたい方へ
ソフトウェアの使い方や操作性をデモにてご確認いただけます。使い方のイメージを把握したい、使えるか判断したい場合にご活用下さい。Keycloakのデモをご希望の方は、下記よりお申込みいただけます。
「情報の一覧」
Keycloakは、シングルサインオンを実現するための認証プロバイダです。本調査報告書では、インストールの方法や詳しい使い方、Rocket.chatとApache HTTP Serverのoidcモジュールとの連携方法を調査した結果を解説しています。
Keycloakを用いて、複数のアプリケーション・サービスのシングルサインオンを実現するための手順の調査報告書です本書では、RedmineやAWS、Office365、Slack等のサービスでSSOが実現できるかを確認しました。
本書では、シングルサインオンを提供するサーバとしてKeycloakを使用し、Kerberos認証によりユーザ名やパスワードの入力なしでウェブサービスにログインできるようにする手順を記述しています。ログインするウェブサービスの例としてはRocket.Chatを使用しました。
LDAPとは、ディレクトリサービスのための標準プロトコルです。LDAPを使い、ディレクトリサービスを提供するソフトウェアやシステムを、LDAPサーバと呼びます。本書は、OSSのLDAPサーバの管理UIの現状についてまとめたものです。
パスワードレス認証とは、指紋や顔認証、デバイス認証など、ログインID・パスワードを使わない方法で認証を行うことを言います。本書は、パスワードレス認証方式であるFIDO2やPasskeyについて調査した内容をまとめたものです。
お客様は、システムごとにアカウントを管理していたため、管理者だけでなくユーザにも管理の手間がかかっていました。この記事は、弊社でOSSのKeycloakを利用したシングルサインオン(SSO)システムを導入した事例です。
お客様は、従業員が利用するポータルサイトやeラーニングシステムなど複数のシステムを利用していました。しかし、従業員の入れ替わりが激しく、IdaaS等の従量課金制のサービスでは、費用面で導入が難しいという課題がありました。そこで、OSSのKeycloakを利用したシングルサインオンサーバを導入しました。
今回は、シングルサインオンのKeycloakに多要素認証を導入した事例です。お客様は、ID/パスワード管理だけではセキュリティ面で不安ということで、多要素認証の導入を検討していました。
クラウド上のサービスを利用する機会が増加したことにより、最近になってシングルサインオンが再注目されています。この記事では、シングルサインオンを実現するOpenAM、Keycloak、IDaaSについてまとめ、主な選定のポイントを解説します。
ここでは、シングルサインオンの仕組みを説明し、シングルサインオンを実現するためにソフトウェアやサービスを選定する時の選び方と検討のポイントについて説明します。
LDAPサーバは、企業内では特にユーザ情報の管理や認証の基盤として使用されています。ここでは、LDAPサーバのデータを管理するためのOSSを紹介します。
FaceAuthは、顔認証に対応していないサービスでも導入できる顔認証のソフトウェアです。PCやスマホに搭載しているカメラを利用して顔認証ができるため、初期費用を抑えて導入することが可能です。このページでは、顔認証システムの導入におすすめのFaceAuthについて紹介します。
OpenAMとは、シングルサインオン(SSO)を実現するためのソフトウェアです。現在のOpenAMはオープンソースとして提供されていませんが、いくつかの商用サポートベンダーによって、OpenAMの公開とサポートは継続されています。
OSS情報
- KeyclockのLDAPデータ管理
- Keycloakは、シングルサインオンの認証バックエンドとしてLDAPを利用することができます。ここでは、LDAPデータ管理ツールとして利用する際の特徴を紹介します。