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

intra-mart Advent Calendar 2013 第15日:IM-Workflowの裏技

この記事は、intra-mart Advent Calendar 2013 第15日の記事です。 日曜日なので、簡単な記事ですが、IM-Workflowの裏技をご紹介します。 ■未処理・処理済などの案 …

no image

認可の閉塞機能を使いこなす

今回は認可の閉塞機能 (※1) についての紹介です。 2013 Summer から提供されていた認可リソースの閉塞機能ですが、2013 Winter で機能を追加して、アクション単 …

no image

intra-mart Advent Calendar 2013 第5日:ViewCreatorは、データベース以外も覗けますよ!

この記事は、intra-mart Advent Calendar 2013 第5日の記事です。 ViewCreatorは、データベースのテーブルを参照するツールとご紹介してきましたが、実は、Accel …

no image

SQL Server利用時の実行速度向上策について

SQLServerのJDBCドライバのパラメータ設定方法です。 このパラメータを設定すると、SQLServer利用時のJDBCプログラミングAPIであるjava.sql.PreparedStateme …

no image

log4jdbcを使ったSQL(JDBC)のトレース

こんにちは、開発本部の榎本です。 開発中にデータベースに対してどのようなクエリが流れているのか確認してみたいことありませんか? 以前、山寺さんが紹介していたResinのログで取得するなど、いろいろな方 …