OpenAM
OpenAMはSSOを実現するOSSです。前述したように、もともとはSun Microsystems社によって開発された商用製品です。Sun Microsystems社がOracle社に買収された後、ForgeRock社(※2)により開発が継続されています。
OpenAMの基本情報を以下にまとめます。
機能 | SSO、認証、認可、アカウント連携 |
サポートするOS | マルチプラットフォーム |
対応言語 | マルチランゲージ(日本語にも対応) |
実装言語 | 主にJava(エージェントと呼ばれるモジュールの一部は、CやC++で実装されている) |
ライセンス | CDDL |
Webサイト | http://www.forgerock.com/openam.html |
ForgeRock社は、Sun Microsystems社でOpenAMの前身であるOpenSSOを開発していた技術者を中心に2010年2月に設立されました。アドバイザーには、Sun Microsystems社の共同設立者の一人であるスコット・マクネリ氏や、Javaの生みの親であるジェームス・ゴスリン氏も名を連ねています。2012年3月には、Accel Partners社から700万ドルの資金を調達し、現在(2012年11月執筆時点)世界15か国に技術者を置くグローバルな企業へと成長を続けています。
ForgeRock社では、OpenAMの他にOpenDJ(ディレクトリサーバ)やOpenIDM(アイデンティティーマネジャー)などを開発しています。
OpenAMで何ができるか
OpenAMの導入目的は複数のシステムをSSOできるようにすることです。ただし、それだけではなく、SSOに関連する広範囲の問題を解決することができます。例えば、以下のようなことが可能です。
また、OpenAMはさまざまなSSOの方式をサポートしており、多くのアプリケーションに対してSSOできます。代表的なSSOの方式として以下があげられます。
SSOの方式 | 概要 | 対象アプリケーション |
認証プロトコルを 利用した方式 |
SAMLやOAuthなどの認証プロトコルを利用した方式。SSO対象のアプリケーションが認証プロトコルに対応している必要がある。 | Google AppsやSalesforce CRMなどのクラウドサービス |
エージェントを 利用した方式 |
エージェント(OpenAM Policy Agent)をSSO対象アプリケーションのサーバ上にインストールし、リクエストを監視する方式。エージェントはログインリクエストをインターセプトし、OpenAMに認証要求する。 | WEBサーバやJava EEコンテナ上で動作するアプリケーション |
代理認証方式 | 通常はユーザが行うログイン画面でIDとパスワードを入力する作業を、サーバが代行する方式。既存のアプリケーションの改修をせずにSSOできる。リバースプロキシサーバに全アプリケーションのリクエストを集中させる方式や、全アプリケーションへのリンクを持つ共通ポータルサイトを経由させる方式などがある。前者の場合、性能面に考慮が必要。ForgeRock社では、OpenAMと連携し代理認証を実現するためのOSSであるOpenIGを提供している。 | 一般的なForm認証をするWEBアプリケーション |
OpenAMを導入した環境の構成例を以下に示します。
一般的にクラウドサービスには、SAMLやOAuthといった認証プロトコルを使用したSSOを行うことができます。
社内アプリケーションには、OpenAM Policy Agentを連携させるか、代理認証方式を適用することで、既存のアプリケーションの改修なしで(または改修を最低限に抑えて)、SSOすることができます。LiferayのようにSSO製品との連携機能がサポートされている場合もあります。LiferayはOpenAMの提供するREST API(※5)を呼び出すことで、認証を行っています。
認証に使用するユーザ情報は、OpenAMに内蔵されているLDAPサーバで集中管理することもできますが、外部のActive DirectoryやRDBMSに保存されている既存のデータを利用することもできます。
ワンタイムパスワードとは、1回限りで無効となる使い捨てのパスワードのことをいいます。第三者によるパスワード悪用などのリスクは小さくできるメリットがあります。OpenAMでは電子メールを利用したワンタイムパスワード機能を実装しています。
多要素認証とは、IDとパスワードでの認証のような単一の認証だけではなく、ワンタイムパスワードなどの複数の認証方式を組み合わせる認証をいいます。OpenAMでは通常のIDとパスワードでの認証の他に、ICカード認証、生体認証などさまざまな認証方式をサポートしています。
REST APIとは、一般的にパラメータを指定して特定のURLにHTTPでアクセスすることで、ユーザ認証や管理するデータの参照や更新ができるようなAPIをいいます。OpenAMでは以下のようなURLにアクセスすることで、認証を行うことができます。
https://[OpenAMサーバのFQDN]/openam/identity/authenticate?username=[ユーザ名]&password=[パスワード]
認証が成功するとセッションIDが発行され、それを使用してデータの参照や更新を行います。
まとめ
OpenAMとは、以下のような特徴を持つSSOを実現するためのOSSです。
- 商用製品同等以上の実績と信頼性
- 複数のSSO方式のサポート
- 豊富な認証方式のサポート
- SSOに関連する多くの機能
OpenAMを導入することで、以下のようなメリットが得られます。
- ユーザの利便性の向上
- システム管理者の負担の軽減
- セキュリティの強化
OpenAMはOSSなので、導入費用はかかりません。問題があればソースを解析して修正することもできます。マニュアルも充実しており、オンラインコミュニティによるサポートも受けられます。メーリングリストに質問すれば、世界中の有識者から素早い回答が得られます(もちろん英語ですが)。
第2回ではインストール方法について説明します。実際に動かしてみてはいかでしょうか。
参考資料
- ForgeRock Community 「OpenAM Project」
- 『OpenAM』 Indira Thangasamy 著、Packt Publishing、2011年1月