※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。
最新のintra-martでは、異なる情報であることがありますので、ご注意ください。
intra-martはver2.1よりLDAPとの連携が可能となりまし た。ここではその詳細について述べていきます。
(1)LDAP概要
LDAP(Lightweight Directory Access Protocolの略) はX.500ディレクトリアクセスプロトコルの簡易版です。もともとはX.500ディレクトリサーバのフロントエンドとして開発されましたが、X.500 ディレクトリサーバがなくても動作するようにしたものが、現在一般的にいわれているLDAPサーバです(TCP上で動作します)。
現在の最新バージョンはLDAP V3となります。
(2)LDAP機能
情報モデルにより、LDAPディレクトリにどういった情報を格納できるかを定義します(DBでのスキーマに相当します)。
またネーミングモデルにより、LDAPディレクトリにある情報にアクセスする方法を定義することになります。
例えば、OSのファイルシステムであれば、ldp.hというファイルにアクセスするには、
/usr/local/include/ldp.h
LDAPの場合、uidが?のデータにアクセスするためには、
uid=?,ou=People, o=intra.intra-mart.jp
(RFC1779)
と記述します。
さらに検索、更新、認証などを提供する機能モデルや、LDAPディレクトリへのセキュリティを制御するセキュリティモデルがあります。
(3)LDAP注意点
一般的なDBと比べると、高頻度にアクセスや更新が行われることになります。しかしDBと異なりトランザクションという概念がありません。さらに検索と取 り出しがはっきり区別されていないことなどがDBと異なる点です。
そのためディレクトリを汎用データベースのように扱ってはいけません。
またLDAP V2 は日本語(多バイト文字)を使えませんが、V3ではユニコードを扱えるようになりました。
(4)JAVAとLDAP
JAVAからLDAPサーバにアクセスする、JNDI(Java Naming and Direcotry Interface)というパッケージが用意されています(Sun JRE1.3から標準装備)。
JNDIを利用するとLDAPサーバにとどまらず、ディレクトリと呼ばれるリソースにアクセスすることが可能です(ただしサーバがJNDIに対応している 必要があり、サービスプロバイダと呼ばれるプログラム(JDBCドライバのようなもの)が必要です)。
(5)intra-martとLDAP
intra-mart ベースモジュール V2.1からLDAP対応となっています。内容は以下の通りです。
・intra-martへのログイン認証をLDAPサーバに任せることができる。
・LDAP上にユーザとパスワード、intra-mart上にその他の情報を保持することになります(intra-martの組織やロール等をLDAPに 移行することは標準では用意していません。なぜならユーザによって、組織やロールなどのディレクトリ定義情報は異なってくるからです)。
・LDAP/intra-mart間のデータの同期はユーザに任されています。ベースモジュール側にデータインポートする機能があるので、ユーザにその フォーマットに合ったデータを用意してもらうことになります。
さらにベースモジュールからデータをエクスポートする機能もあるので、そのデータをLDAPサーバに取り込んでもらうことになります。
・LDAPサーバへの検索(取り出し)、更新(追加)、削除のメソッドが用意されています。その他の操作はJava連携機能を利用して作り込むことになり ます。
(6)LDAP接続概要
以下にLDAPとintra-martとの接続方法の概要について述べます。
a.機能概要
・intra-martへのログイン認証時にLDAPを使用することができます。
・ログインユーザを他システムと一元管理できま す。
b.動作環境及び開発言語
Sun JDK1.3(国際版)を使用することになります(JNDI APIを同梱している。)。
対応LDAPサーバ:Netscape Direcotrory Server4.1、Microsoft Windows2000 ActiveDirecotry
c.機能詳細
・LDAPはベースモジュールへのログイン認証にのみ使用する形態です。
・LDAPのバージョン(V2,V3)は特に意識せず、JNDIの仕様にあわせてあります。
d.LDAPへの接続API
・JNDIのメソッドを利用し、検索、登録、削除などの基本的な関数をJavaScriptまたはJavaから使うことができま す。
e.LDAPの設定
・LDAPは認証のみに使用します。よってLDAP上にはユーザとそのパスワードがエントリされていればよいことになります。
・マルチグループ機能を使う場合は、LDAPのインスタンスをグループごとに用意して おきます。
f.ベースモジュールの設定
・LDAPの接続設定をログイングループごとにintra-martの画面から行います(データ ベースの設定と同様)。
・LDAPの接続設定画面には、intra-martへのログインにLDAP認証を使うかどうかの項目を設けてあります。
・LDAPの使用を開始した後は、intra-martがそれまで持っていたログインパスワードは無効となります。
LDAP側のパスワードを使用し、intra-martにはパスワードを保持しないようになります。また、intra-mart側のユーザの有効 期限も無効となります。
(ただしLDAP利用時、ユーザIDだけは常にベースモジュールにも同 じものが必要になります)
・LDAPの使用を中止したいときは、ユーザデータのインポート機能を使い、各ユーザにパスワード を割り振ってもらい、それか らLDAPの使用を中止します。(LDAPの使用を始める前のパスワードを持っているユーザは、そのパスワードでロ グインでき ます。)
(7)認証動作
↓
intra-mart側に設定されたロールにより アクセスセキュリティモジュールが動作し、 許可されたメニューだけが表示される。 |
(8)データの同期
LDAP連携時にもベースモジュールには必ず同一のユーザ情報(ユーザIDなどパ スワード以外のユーザデータ)が必要なため、以下のような同期を取る作業が発生します。
a.LDAP側のユーザコードが追加・変更・削除されたとき
ベースモジュール指定のフォーマットでユーザデータを用意してもらい、それをベースモジュールにインポートする必要がありま す。
b.ベースモジュール側 のユーザコードが追加・削除されたとき(ユーザコードの変更はない場合。)
ベースモジュールの指定のフォーマットでユーザデータを出力します。ベースモジュールから出力さ れたデータファイルをLDIF形式などLDAPがインポートできるのデータ形式に変換し、それをLDAPにインポートします。
※intra-martにはLDAPサーバにアクセスするためのAPIが用意され ているため、それらを用いて同期をとるプログラムを独自に作成することもできます。
(9)制限事項
LDAP認証を使用する場合、intra-martに用意されているi-mode用パスワードで はログインできなくなります。そのためi-mode用パスワードは、無効になります。