トップ 最新 追記

ふたつの川うるおう日記

Seasar Conference 2008 Autumn - 9/6(SAT), Tokyo

2008-06-03 (Tue)

_ [Server][Admin][Java][Seasar] OpenLDAPのスキーマをOpenDSに追加する時の7つのポイント

OpenDSはSunが中心にオープンソースで開発しているJavaで書かれたディレクトリサーバです。詳細についてはOpenDSのサイトを見てもらえば判りますが、個人的に興味を引かれた特徴は次の点です。

  • Javaで書かれているので組み込みで動かせる
    • テストも兼ねて実際にコード書いてみましたが良い感じ
    • Java 5以上必要
  • マルチマスタ構成が可能
    • もちろんschmeaやconfig系も込みで
  • 将来的にSun Java System Directory Server Enterprise Editionの中身はOpenDSになるらしい

さて、では実際に使おうとするといろいろスキーマを追加したくなります。早速、広く使われているOpenLDAP用のスキーマを追加しようとしたところいくつか変更する必要がありました。

先に良く使うスキーマの変更済みスキーマを提示しておきます。動作確認はちょっとバージョンが古いですが、Mavenで手に入るOpenDS 1.0.0 build 005でしました。

これらを作るにあたって判ったスキーマファイルの変更ポイントは次の7つです。

  • 1. スキーマファイルは $OPENDS_HOME/config/schema 以下に XX-hoge.ldif というファイル名で配置

XXの部分には任意の数字を入れます。数字が若い順に読み込まれるので標準で入っているスキーマより大きい数字を指定します。上で挙げたスキーマでは、適当に10としています。

  • 2. 定義を開始する部分に次を追加
dn: cn=schema
objectClass: top
objectClass: ldapSubentry
objectClass: subschema

ファイルの先頭のコメント部分はそのままで構いません。

  • 3. attributetype ( ... ) を attributeTypes: ( ... ) に置換

変更前: openssh-lpk.schemaより

attributetype ( 1.3.6.1.4.1.22054.500.1.1.1.13 NAME 'sshPublicKey'
        DESC 'MANDATORY: OpenSSH Public key'
        EQUALITY octetStringMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )

変更後: openssh-lpk.schemaより

attributeTypes: ( 1.3.6.1.4.1.22054.500.1.1.1.13 NAME 'sshPublicKey'
        DESC 'MANDATORY: OpenSSH Public key'
        EQUALITY octetStringMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
  • 4. objectclass ( ... ) を objectClasses: ( ... ) に置換

変更前: openssh-lpk.schemaより

objectclass ( 1.3.6.1.4.1.22054.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY
        DESC 'MANDATORY: OpenSSH LPK objectclass'
        MUST ( sshPublicKey $ uid )
        )

変更後: openssh-lpk.schemaより

objectClasses: ( 1.3.6.1.4.1.22054.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY
        DESC 'MANDATORY: OpenSSH LPK objectclass'
        MUST ( sshPublicKey $ uid )
        )
  • 5. attributeTypes ( ... ) の ) 前には必ずスペースが1つ必要

NG: qmail-ldap.schemaより

attributeTypes: ( 1.3.6.1.4.1.7914.1.2.1.6 NAME 'mailHost'
        ... 省略 ...
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE)

OK: qmail-ldap.schemaより

attributeTypes: ( 1.3.6.1.4.1.7914.1.2.1.6 NAME 'mailHost'
        ... 省略 ...
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE )

objectClassesはスペースが無くても大丈夫です。

  • 6. 定義途中で改行した場合、先頭にスペースを2つ以上入れてから続きを記述する

NG: openssh-lpk.schemaより

attributetype ( 1.3.6.1.4.1.22054.500.1.1.1.13 NAME 'sshPublicKey'
 DESC 'MANDATORY: OpenSSH Public key'
 EQUALITY octetStringMatch
 SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )

OK: openssh-lpk.schemaより

attributetype ( 1.3.6.1.4.1.22054.500.1.1.1.13 NAME 'sshPublicKey'
  DESC 'MANDATORY: OpenSSH Public key'
  EQUALITY octetStringMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )

TabもNGです。

  • 7. 定義と定義の間に空行を作ってはいけない、コメントアウト行を入れるのはOK

NG: openssh-lpk.schemaより

dn: cn=schema
objectClass: top
objectClass: ldapSubentry
objectClass: subschema

# octetString SYNTAX
attributeTypes: ( 1.3.6.1.4.1.22054.500.1.1.1.13 NAME 'sshPublicKey'
  DESC 'MANDATORY: OpenSSH Public key'
  EQUALITY octetStringMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )

# printableString SYNTAX yes|no
objectClasses: ( 1.3.6.1.4.1.22054.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY
  DESC 'MANDATORY: OpenSSH LPK objectclass'
  MUST ( sshPublicKey $ uid )
  )

OK: openssh-lpk.schemaより

dn: cn=schema
objectClass: top
objectClass: ldapSubentry
objectClass: subschema
# octetString SYNTAX
attributeTypes: ( 1.3.6.1.4.1.22054.500.1.1.1.13 NAME 'sshPublicKey'
  DESC 'MANDATORY: OpenSSH Public key'
  EQUALITY octetStringMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
# printableString SYNTAX yes|no
objectClasses: ( 1.3.6.1.4.1.22054.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY
  DESC 'MANDATORY: OpenSSH LPK objectclass'
  MUST ( sshPublicKey $ uid )
  )

以上の7つに注意すればOpenLDAPのスキーマをOpenDSでも使うことができます。 OpenLDAPとOpenDSの標準で提供されているスキーマのいくつかは、オブジェクトクラスの構造クラスと補助クラス定義が異なるのがありますが、基本的にはほぼ同じようなのでそれほど戸惑うこともないと思います。

そして最後に、S2Directoryで問題無くOpenDSのエントリを扱えることも確認済みです。

[18:50追記] S2DirectoryでSMD5, SSHAを使用してパスワードを保存した時に保存したパスワードでOpenDSのSASL認証が上手くいきませんでした。原因はsaltの長さがS2Directoryは4バイトを、OpenDSは8バイトを想定しているためでした。とりあえずDIRECTORY-25で対応して、S2Directory 0.7-SNAPSHOTをデプロイしときました。

| Bookmark:

2008-06-07 (Sat)


2008-06-16 (Mon)

_ [Server][Admin] Apache 2.2.9 で --with-ldap オプション が見た目認識しないけど気にしない

Apache 2.2.9 で -with-ldap オプション を付けると任意のオプション(修正)で次のような感じで任意のオプションのWARNINGが出ます。

configure: WARNING: Unrecognized options: --with-ldap

これを真に受けて --with-ldap を外して make すると --enable-ldap や --enable-authnz-ldap がコンパイルでこけてしまうので認識されないと表示されたオプションは外してはいけません。2.2.8から2.2.9の間でオプションの解析を何かミスっただけだと思います。

| Bookmark:

2008-06-24 (Tue)

_ [Server] RAID 1でもダメな時はダメか

RAID 5は2個同時に壊れて個人的に痛い目にあったのでもっぱらRAID 1を使ってたけど、RAID 1でもハードに電圧的な負荷が掛かったり、RAIDコントローラが狂ったりしてRAIDの構成情報やパーティションテーブルがあるMBRが同時に壊れてどうしようもない時があるんだね。

RAIDカード経由しないで直接HDD1台をマシンに繋いでもパーティションテーブルが空っぽってのは悲しかった。

| Bookmark:

_ [大学] アルファギークと学生の討論会

とても反応遅いけど面白そうですね。会場はSeasarConの会場で会場的にはOKです。アルファギークにはいろいろ著名な方の名前が挙がってて楽しくなりそうですけど、肝心の相手する学生がどんな意識を持った学生の方々が来るかが楽しみです(宣伝の仕方による?)。IPAのイベントなんかはかなり意識の高い(?)方々だと思いますし。

| Bookmark:

| Return to page top | Vicuna CMS - WordPress Theme - Vicuna Ninja Style for tDiary |