Keycloak概説

ここでは今注目のOSS「Keycloak」を紹介いたします。

シングルサインオン(SSO)とは

例えば、新しいアプリにアカウントを作るたびにID/Passwordを作成し、覚えておかなくてはならないのはとても面倒です。管理する側としても、複数のアプリで独立なID/Passwordを管理するとなると大きなコストがかかります。
ところが近年、新しいアプリでアカウントを作成するとき、Google・Twitter・Facebookなど、既に作成してあるアカウントのID/Passwordを用いることができます。それが「SSO」です。「Keycloak」などのSSOソフトウェアを用いることでID/Passwordを1か所で管理でき、管理者側のコストを下げることができます。またユーザーは1つのID/Passwordを覚えるだけで複数のアプリにログインでき、ストレスフリーになります。

Keycloakとは

Keycloakはオープンソースのアイデンティティ・アクセス管理ソフトウェアです。SSOやAPIアクセスの認証・認可制御を実現するもので、この分野のソフトウェアとして後発の部類に入ります。しかし現在コミュニティベースの開発が進められており、この分野のソフトウェアとしては最も勢いのあるソフトウェアの1つと言われています。
また以下で説明しますが、機能がシンプルになっておりコードベースが小さいため管理が容易であると(個人的には)思います。

Keycloakの動作環境

Keycloakの動作には512MB以上のメモリと、1GB以上のディスク容量が必要です。また、以下のコンポーネントが必要になります。
・Oracle JDKまたはOpren JDK 8
・WildflyまたはJBoss EAP
・PostgreSQL, MySQL, H2 Databaseなど

世界と日本での注目度

Googleトレンドにて、直近5年間の注目度を調べてみました。

世界、日本ともにOpenAMを超える注目度をもつソフトウェアといえるでしょう。
※OpenAMとはSSOの代表的なプラットフォームです。

Keycloakの主な機能

・多要素認証
Keycloakではユーザー/パスワードによる認証だけでなく、ワンタイムパスワードなどを組み合わせた「多要素認証」を実装することができます。
(OTP実装方法は本HPに載っていますので、そちらをご覧ください)
・外部IdP連携
GoogleやFacebookといったサービスと連携することで、認証を外部に委譲することができます。
・ディレクトリサーバ連携
KeycloakはOpenLDAPやActive Directoryといったディレクトリサービスに接続することで、既存のユーザー情報をKeycloakに統合することができます。標準では、LDAPおよびKerberosに対応したディレクトリサービスと連携できます。
・認可プロバイダー
KeycloakはOAuthの認可サーバや、OpenID ConnectのIdPである認可プロバイダーとして機能し、サードパーティーアプリケーションへのアクセストークンの発行やAPIサーバへのアクセス制御などの機能を提供します。
・クライアントアダプター
Keycloakでは、クライアントアダプターと呼ばれるライブラリを提供されています。
・クライアントプロキシ
HTTPのリバースプロキシとして動作し、クライアントアダプターを適用できないバックエンドのアプリケーションに対してOAuth/OIDCによるアクセス制御を提供します。

KeycloakとOpenAMの機能比較

https://www.slideshare.net/wadahiro/keycloak-83020383
このサイトのスライドの10ページにある表が、とてもまとまっていて分かりやすいです。性能の豊富さではOpenAMに軍配が上がりますが、Keycloakはコードベースが小さく、メンテナンスがしやすいというメリットがあります。ですから、リスクベース認証が必要なときにはOpenAMを、そうでないときにはKeycloakを採用するケースが多いようです。

参考サイト

・Keycloakの公式ドキュメントはこちらです
https://www.keycloak.org/documentation.html
・Keycloakの色々な機能の紹介をアドベントカレンダー形式でやってくださったものがあります。
https://qiita.com/advent-calendar/2017/keycloak-by-openstandia

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です