2018年5月17日木曜日

OID が英字って

とある 389 Directory Server 系の LDAP サーバの中を調査しているのだが、どうも OID が英文字列で構成されているパターンがある模様。スキーマ定義を見るとこんな感じ。

attributeTypes: ( foo-oid NAME 'foo' DESC ....)
objectClasses: ( bar-oid NAME 'bar' SUP top STRUCTURAL...)
名前に「-oid」とかついている。

OpenLDAP では OID Macro で oid のマクロを定義できるので 389 でもそういうのがあるんだろうと探し回ったが今のところ見当たらない。古いが以下のドキュメントを発見。

https://www.centos.org/docs/5/html/CDS/ag/8.0/Extending_the_Directory_Schema-Managing_Object_Classes.html

The object identifier of the attribute. An OID is a string, usually of dotted decimal numbers, that uniquely identifies an object, such as an object class or an attribute. If an OID is not specified, the Directory Server automatically uses object-class_name-oid. For example, if the object division is created without supplying an OID, the Directory Server automatically uses division-oid as the OID.
どうも OID が指定されていないと勝手に名前に -oid をつけてそれで良しにしてしまうらしい。OID が無い時点でエラーにして欲しいんだが... 管理 GUI でスキーマ作ったりするとそうなってしまうんだろうか?とりあえず以下のようなお勧めできない系の警告も記されていた。もしかしたら今はそんな仕様は廃止されているのかもしれない。

Using an alphanumeric OID such as division-oid is deprecated and strongly discouraged because it will lead to interoperability problems. Red Hat strongly encourages that you request your own OID prefix from IANA (Internet Assigned Number Authority).