開発Blog

intra-martのLDAP接続機能について

投稿日:


※下記内容は、過去の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.1Microsoft 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用パスワードは、無効になります。

-開発Blog
-

執筆者:

関連記事

no image

J2EEフレームワークに関するFAQ

※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。 J2EEフレームワークに関する技術的 …

no image

intra-martベースモジュール ver4.X インストール・設定時のトラブルガイド

  ※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。   ベースモ …

no image

iAPへアクセスするURLが複数ある場合のベースURLの設定方法

ここでは、ベースURL をリクエスト情報を基に切り替えるための手順を BaseUrlProvider のサンプル実装、Webサーバとの連携例と共に紹介します。 製品標準の設定では、テナント一つにつき、 …

no image

iWP Ver7.xでのチューニング

開発本部の大西です。 開発は半期末とかあまり関係ないと思いきや、諸般の事情でいろいろと大変な今日この頃です。 江本さんがebuilderのネタばかり書くので、傷食気味にならないように、季節柄、チューニ …

no image

ロードバランス環境の構築方法

Webサーバと intra-mart Accel Platform 間でロードバランスを行いながら連携を行う設定例を紹介します。 以下の手順を参考として、各種要件・ご利用の環境に合わせて環境構築を行っ …