OpenLDAP

シングルサインオンを実現する方法としては、

a) 各アプリ/OSSの認証用のDBを直接読みに行く。
b) 何らかの方法で Active Directory を使う。
c) 何らかの方法で LDAP を使う。

という方法が考えられると思います。
# 他にもあるんでしょうが、

私自身 LDAP をよく知らないので、a) の方法を考えていたのですが、よく Active Directory と LDAP が比較されているので、ちょっと調べてみました。
技術評論社のページにいいものがあります。
そろそろLDAPにしてみないか? 中満英生
http://gihyo.jp/admin/serial/01/ldap

2007年6月4日から月1ぐらいのペースで連載されています。ちょうど、日本LDAPユーザ会 http://www.ldap.jp/ が出来た頃みたいです。

この OpenLDAP http://openldap.org/ は Linux 上で動きます。実は Windows 上も2008年4月ぐらいまでは公開されたみたいなのですが、現在は公開が中止されています。

2007年10月4日
OpenLDAP for Win32 – その1.
http://lightmaterial.blogspot.com/2007/10/openldap-for-win32-1.html

なので、OpenLDAP を試すためには Linux を立てなくちゃならない、え~、面倒臭い。訳ですが、まあそのあたりの(私の愚痴)は無視して話を進めます。

# ちなみに、当然のことながら商用のLDAPもあります。商用のLDAPは試したことがないので、どれだけ使いやすいか/値段がどうなのか、なんてのは分かりませんが、OSS を使うのに商用のLDAPを使うのは本末転倒な気がするので、OpenLDAPを使うことを前提にして考えています。

このLDAP(Lightweight Directory Access Protocol)、何をするのかを簡単に言えば、ユーザ認証をします。ユーザ認証だけなれば、RADIUSサーバなんてのや、普通のWindows認証を使ってもいいのですが、LDAPの場合なんらかの付加情報を持つことができます。付加情報ってのは、

– そのユーザはどんなグループに属しているか?
– そのユーザはどんな権限を持っているか?
– そのユーザの名前は?メールアドレスは?

ってな感じですね。内部的にはDBを持っていて検索しているだけなので、何でも入れられると言えば入れられる。似たものとして Active Directory がありますが、これも似たような情報を持てます。仕組みは違うけど、まぁチープに使っている分には似たようなものです。

ここで使っている WordPress もそうですが、ユーザ認証は内部のDBに持っています。管理ユーザや投稿ユーザという「役割/role」が付けられますが、それを設定するのは wordpress の admin 画面で設定します。また、ユーザを追加したり削除したり、パスワードを変更したりする機能も admin 画面で行います。

投稿するユーザを特定した後、roleを比較して何ができるのか/何ができないのかを判断するのはアプリに独自に必要でしょうが、ユーザを特定するところ(認証するところ)は、各アプリほとんど〃ことをやっています。

– ユーザ名とパスワードを入れてログイン
– 内部のDBで比較
– ユーザを特定する。

OSS に限りませんが、ユーザーを特定する必要のあるアプリケーションはほぼ似たようなことを独自にやっています。まぁ、単体で動かすのですから当然です。
ですが、このようなユーザー認証が必要なアプリを複数集めて「連携」させようとした時に、ここがネックになります。これを解決するのが「シングルサインオン」なわけですが、では具体的にどうやって「連携」させるのか?が問題です。
アプリは独自にユーザー認証のDBを使っているので、無理矢理連携させるためには冒頭に書いた、

a) 各アプリ/OSSの認証用のDBを直接読みに行く。

ってことが必須になりますなぁ。

ところが、うまいことLDAPに対応していれば連携が取りやすくなるはずです。

WordPress de LDAP
http://www.neo.ie.u-ryukyu.ac.jp/~joma/sblog/index.php?m=11&y=07&entry=entry071120-175349

ってのもあるそうです。となると、他のOSSアプリでもLDAP対応のものがありそうです。

というわけで、複数のOSS + LDAP → グループウェア化? という図式が浮かんでくるわけです。
# もっと検討が必要ですが、シングルサイノン関係は LDAP を使えばいけそうだ、という見通しをば。

以下は読んで(私が)参考になったもの。

第1回 まずは使ってみよう
http://gihyo.jp/admin/serial/01/ldap/0001
第7回 ApacheのBasic認証をLDAPで
http://gihyo.jp/admin/serial/01/ldap/0007
第8回 LDAPデータ管理
http://gihyo.jp/admin/serial/01/ldap/0008?page=3

カテゴリー: 開発 パーマリンク