OSSで認証を一元化
今月の気になるオープンソース情報(2018年10月号)
OSS研究室 森 彰吾
今回は、Keycloakをご紹介します。Keyclockは、RedHatによって開発されているシングルサインオン(SSO)を実現するためのソフトウェアです。
SSOとは、様々なシステムへの認証の手間を省くための仕組みです。
システム毎にユーザやパスワードを管理していると次のようなことが起きます。
- 各システムにユーザを作成/削除するのが大変
- 利用者が自身のユーザIDとパスワードを忘れてしまう
このような状況を防ぐために、ActiveDirectoryやOpenLDAPなどのディレクトリサーバを利用して、ユーザ情報を一括管理することはよくあります。ただしユーザ情報が統一されても、ログインする手間がかかることに変わりはありません。
SSOを導入することで、1回のログインによって複数のシステムを利用できるようになります。
OSSでのシングルサインオン
シングルサインオンをOSSで実装する場合、従来はOpenAMというソフトウェアが利用できました。しかしOpenAMは、商用ソフトウェアとして提供されるようになり、オープンソースのコミュニティは停滞しています。
そのような状況で脚光を浴びているのが、Keycloakです。
Keyclockを導入した場合、ログインのインタフェースは、Keycloakのログイン画面に統一されます。一度Keyclockのログイン画面からログインをするだけで、複数のシステムを利用できるようになります。
Keycloakの特徴
Keycloakは次のような特徴があります。
- SSO標準プロトコルに対応
Keyclockは、SSOの標準プロトコルに対応しているため、多くのソフトウェアと連携してSSOを実現することができます。
具体的には、SSOを実現するために標準化されたSAMLとOpenID Connectというプロトコルがあり、Keycloakはこれに対応しています。
このプロトコルを利用することで、単純な認証だけでなく、ユーザの名前や所属などの情報や権限についても、連携対象のソフトウェアに渡すことができます。 - 様々な認証形態に対応
Keycloakは一般的なユーザID/パスワードでの認証以外に、最近よく利用されるGoogleやFacebook,TwitterなどのSNSと連携した認証をサポートしています。
またより安全性を高めるために、Google AuthやFreeOTPと連携した2要素認証もサポートしています。 - ActiveDirectory/LDAPに対応
Keyclockは、既に存在するActiveDirectory/LDAPのユーザ情報を利用できます。ActiveDirectory/LDAPを使って認証するだけでなく、登録されているユーザ情報を別のアプリケーションに渡すこともできます。
Keycloakの課題
Keycloakは、OpenAMなどと比較すると非常に新しいソフトウェアです。
新しいため、インタフェースが洗練され利用しやすい一方で、機能面ではOpenAMに見劣りします。具体的には、SAMLやOpenID Connectのプロトコルに対応していないソフトウェアとの連携ができないという点です。ただし開発は現状も進んでいるため、機能の追加が期待できます。
デージーネットでは、デージーネットでは、SSOを実現するためにKeyclockを提案しています。
一方で、Keycloakだけでは要件を満たせない場合には、OpenAMベースの製品を利用するなど、ケースに合わせて最適なソフトウェアをお勧めしています。