SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

OpenAMで始めるシングルサインオン

シングルサインオンとOpenAM

OpenAMで始めるシングルサインオン(1)


  • X ポスト
  • このエントリーをはてなブックマークに追加

OpenAM

 OpenAMはSSOを実現するOSSです。前述したように、もともとはSun Microsystems社によって開発された商用製品です。Sun Microsystems社がOracle社に買収された後、ForgeRock社※2)により開発が継続されています。

 OpenAMの基本情報を以下にまとめます。

表1:OpenAMの基本情報
機能 SSO、認証、認可、アカウント連携
サポートするOS マルチプラットフォーム
対応言語 マルチランゲージ(日本語にも対応)
実装言語 主にJava(エージェントと呼ばれるモジュールの一部は、CやC++で実装されている)
ライセンス CDDL
Webサイト http://www.forgerock.com/openam.html

※2:ForgeRock社

 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に関連する広範囲の問題を解決することができます。例えば、以下のようなことが可能です。

  • ユーザの属性に応じたアクセス制御
  • 複数のシステム間でのアカウント連携
  • ユーザ情報とパスワードポリシの集中管理
  • ワンタイムパスワード機能(※3)や多要素認証機能(※4)などによる認証の強化

 また、OpenAMはさまざまなSSOの方式をサポートしており、多くのアプリケーションに対してSSOできます。代表的なSSOの方式として以下があげられます。

表2:OpenAMが提供する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を導入した環境の構成例を以下に示します。

図2:OpenAM導入後の環境の例
図2:OpenAM導入後の環境の例

 一般的にクラウドサービスには、SAMLやOAuthといった認証プロトコルを使用したSSOを行うことができます。

 社内アプリケーションには、OpenAM Policy Agentを連携させるか、代理認証方式を適用することで、既存のアプリケーションの改修なしで(または改修を最低限に抑えて)、SSOすることができます。LiferayのようにSSO製品との連携機能がサポートされている場合もあります。LiferayはOpenAMの提供するREST API(※5)を呼び出すことで、認証を行っています。

 認証に使用するユーザ情報は、OpenAMに内蔵されているLDAPサーバで集中管理することもできますが、外部のActive DirectoryやRDBMSに保存されている既存のデータを利用することもできます。

※3:ワンタイムパスワード機能

 ワンタイムパスワードとは、1回限りで無効となる使い捨てのパスワードのことをいいます。第三者によるパスワード悪用などのリスクは小さくできるメリットがあります。OpenAMでは電子メールを利用したワンタイムパスワード機能を実装しています。

※4:多要素認証機能

 多要素認証とは、IDとパスワードでの認証のような単一の認証だけではなく、ワンタイムパスワードなどの複数の認証方式を組み合わせる認証をいいます。OpenAMでは通常のIDとパスワードでの認証の他に、ICカード認証、生体認証などさまざまな認証方式をサポートしています。

※5:REST API

 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月
修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
OpenAMで始めるシングルサインオン連載記事一覧

もっと読む

この記事の著者

田村 広平(タムラ コウヘイ)

OpenAMコミッタ。1978年長野県生まれ。OSS(特にOpenAM)の研究開発、テクニカルサポートに従事。E-Mail  : ktamura.biz.80@gmail.comTwitter : @tamura__246GitHub : https://github.com/k-tamuraブロ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6318 2013/07/28 18:28

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング