OpenDJ(Open Source Directory Services in Java)は、OpenAM同様にフォージロックが提供するOSSの1つで、REST APIや先進的なレプリケーションアーキテクチャを実装した高機能なディレクトリサーバーです。アプリケーションへの組み込みを容易にする仕組みが実装されており、OpenAMの組み込みデータストアとしても採用されています。
概要 | 内容 |
---|---|
初版 | 2.4 / 2010年12月21日 |
最新版 | Release 2.6.0 / 2013年6月26日 |
実装言語 | Java |
対応OS | クロスプラットフォーム |
対応言語 | 英語、フランス語、ドイツ語、スペイン語、日本語、中国語 |
サポート | フォージロックによるサブスクリプション、日本国内でも幾つかの企業が有償サポートを提供 |
機能 | ディレクトリサービス |
ライセンス | CDDL |
公式サイト | http://www.forgerock.com/opendj.html |
表2 OpenDJの主な情報 |
OpenDJはサーバーとしての機能だけでなく、クライアントツールも充実しています。CUIのツールもありますが、以下のような洗練されたGUIの管理ツールも備えており、直感的な操作が可能になっています。
OpenDJは多くのOSにインストールでき、その作業は非常に簡単です。Java Web Startがインストールされていれば、jnlpファイルをダウンロードするだけでインストールが開始されます。またWindowsインストーラーやrpm、debパッケージなども提供されています。
OpenAMはバージョン10.0.0から、LDAPサーバーのパスワードポリシー機能と連携できるようになりました。IETFが標準化したLDAPサーバーのパスワードポリシーを処理するための規約(LDAP Beheraパスワードポリシー)に準拠しています。
これにより、パスワードの履歴チェックやアカウント作成後のパスワードの強制変更の設定などが行えるようになります。OpenAM管理コンソールのLDAP認証のページに、以下の項目が追加されています。
デフォルトで有効になっていますので、LDAPサーバーのパスワードポリシー制御を有効にすれば、OpenAMのLDAP認証モジュールはそれに従うようになります。OpenDJの場合は、dsconfigコマンドなどでパスワードポリシーとACI(アクセス制御命令)の設定変更を行うと、OpenAMで機能が有効になります。
この機能はLDAP Beheraパスワードポリシーの仕様に準拠しているOpenLDAPなどのディレクトリサーバーでも機能します。デフォルトのOpenDJを利用した場合は、以下の機能が動作することを確認しています(注3)。
設定項目 | デフォルト値 | 概要 |
---|---|---|
allow-expired-password-changes | false | パスワードが有効期限切れになっているユーザーに対し、自身のパスワード変更を許可するかどうかを示します。 |
expire-passwords-without-warning | false | ユーザーが期限切れの警告通知を見たことがない場合でも、ユーザーのパスワードを失効させるかどうかを示します。 |
force-change-on-add | false | アカウント作成後の最初の認証の際に、パスワードの変更を強制するかどうかを示します。 |
grace-login-count | 0 | ユーザーが新しいパスワードを設定できるように、有効期限が切れた後、ユーザーに許可されているログイン猶予回数を指定します。 |
idle-lockout-interval | 0 s | ログイン試行がされないユーザーをロックアウトするまでの時間を指定します。 |
lockout-duration | 0 s | 認証失敗を繰り返してロックされた場合のロック時間を指定します。 |
lockout-failure-count | 0 | ユーザーに許可されているの最大連続認証失敗回数を指定します。この値を超えるとユーザーはロックアウトされます。 |
lockout-failure-expiration-interval | 0 s | 認証失敗回数が保存される時間を指定します。 |
max-password-age | 0 s | 同じパスワードを使用し続けることができる最大時間を指定します。 |
max-password-reset-age | 0 s | 管理者によってパスワードリセットされた後に、ユーザーがパスワードを変更できる時間を指定します。この時間を超えるとロックアウトされます。 |
password-change-requires-current-password | false | ユーザーが新しいパスワードを設定するときに、現在のパスワードを入力する必要があるかどうかを示します。 |
password-expiration-warning-interval | 5 d | パスワードの有効期限切れの警告通知が転送され始める日数を指定します。 |
password-history-count | 0 | パスワード履歴に保持する旧パスワードの最大数を指定します。履歴に残っているパスワードには変更できません。 |
password-history-duration | 0 s | パスワードをパスワード履歴に保持する時間を指定します。 |
require-change-by-time | - | ユーザーにパスワード変更を強制するまでの猶予(時間)を指定します。 |
表3 OpenAMで利用可能なパスワードポリシー |
注3:現在最新のOpenAM 11.0.0において、パスワードポリシーは認証モジュール内のみで機能します。そのため認証モジュール以外の機能(例えば、エンドユーザーのパスワード変更時など)ではポリシーが効きません。この仕様に関してはエンハンス要望としてJIRAにも登録されており、今後改善される可能性があります。
OpenAM 10.1.0-Xpressから、高可用性を実現するセッションフェールオーバーの実装が簡単な仕組みに変更されました。
以前のバージョンでは、セッションフェールオーバーを機能させるために、Open Message QueueとBerkeley DBの利用が必須でした。この構成は多くの時間を必要とし、複雑さを増加させる原因になっていたため、実装が修正されました。
OpenAM 10.1.0-Xpress以降では、Message Queueの代わりに設定データストアにセッションデータを書き込み、それをOpenDJがレプリケーションするようになっています。この実装により、前述の問題が解決されるだけでなく、OpenAMサーバー再起動後もセッションを持続できるようになっています。
設定方法は非常に簡単です。2台目以降のOpenAMの初期設定の際に、手順5の「サイト設定」で、「サイト名」と「ロードバランサーのURL」を入力し、「セッション HA 永続化とフェイルオーバーを有効にします」のチェックボックスにチェックを入れるだけです。
OpenAM 11.0.0では、コアトークンサービス(CTS)機能が強化されました。CTSとは、OAuth 2.0やSAML 2.0トークンをOpenDJに保存し、冗長構成となっているOpenDJ間でレプリケーションを行うサービスのことです。図のようにトークンの情報をOpenDJに保持します。
保存されたトークンはOpenDJのレプリケーション機能により、冗長構成となっている別のOpenDJに送信され、同期が取られます。これにより、一方のサーバーがダウンしても、SAML 2.0やOAuth 2.0/OpenID Connectの認証処理が継続できるようになっています。
なお、この機能はOpenDJの機能に依存しており、OpenDJ以外のディレクトリサーバーを使用した場合では使用できません。
今回はOpenIGおよびOpenDJの概要と、これらのソフトウェアを利用したOpenAMの新機能について紹介しました。
次回は、OpenAMが対応している認証・認可のプロトコルと、クラウドサービスへのSSO(フェデレーション)について説明します。OpenAMはSAML 1.1/2.0、WS-Federation、WS-Trust、OpenID、OAuth 2.0に対応しており、最新バージョンの11.0.0ではOpenID Connectにも対応しました。これらによりGoogle Apps、Salesforce、FacebookなどさまざまなクラウドサービスへのSSOが実現できます。
和田 広之(わだ ひろゆき)
野村総合研究所のオープンソースサポートサービス OpenStandiaで、オープンソースを使ったサポートや製品開発の業務に従事。
Twitter: @wadahiro
田村 広平 (たむら こうへい)
OpenAM コミッタ。
野村総合研究所のオープンソースサポートサービス OpenStandiaで、OpenAMを中心としたOSSの研究開発・テクニカルサポートを担当。
Twitter: @tamura__246
Copyright © ITmedia, Inc. All Rights Reserved.