開発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

「印影機能」をさくっと試してみる

今日は IM-Workflow Ver.7.2 のパッチ6で追加された「印影機能」を動かしてみます。 「印影機能」は、以下の準備が必要です。 ワークフローパラメータで「印影の使用可否」を「使用する」に …

no image

IM-共通マスタ CSVスナップショットインポートのパフォーマンス検証

WebPlatform/AppFramework Ver.7.2 パッチ6の要件16570にて、IM-共通マスタからアプリケーション共通マスタへの同期処理のパフォーマンス改善を行い、下記効果を確認しま …

no image

intra-mart Advent Calendar 2013 第22日:アナウンス機能について(2013 Winter新機能)

この記事は、intra-mart Advent Calendar 2013 第22日の記事です。 今回は、Accel Platform 2013 Winter(Felicia)からの新機能、アナウンス …

no image

intra-mart WebPlatform/AppFramework Ver7.2について その1

こんにちは、開発本部の大西です。 ご存知の方が多いかと思いますが、現在、intra-mart WebPlatform/AppFramework の最新リビジョンである、Ver7.2のリリースを3月31 …

no image

intra-mart Advent Calendar 2013 第14日:IMBoxを抜いてAccel Platformをインストールする方法

この記事は、intra-mart Advent Calendar 2013 第14日の記事です。 別の記事を考えていたのですが、昨日だけで、この内容を3回も聞かれたので、意外と皆さんお困りだと思います …