Solaris ネーミングの管理

XFN リファレンス用 X.500 属性の構文

この節では、XFN リファレンス用の X.500 属性の使用についての補足情報を述べます。XFN リファレンスを X.500 における属性として保存できるようにするためには、ディレクトリスキーマを、この付録で定義されているオブジェクトクラスと属性をサポートするように変更する必要があります。

オブジェクトクラス

XFN リファレンスをサポートするために、XFN と XFN 補助の 2 つの新しいオブジェクトクラスが導入されています。XFN オブジェクトクラスは FNS に適切ではありません。これは、米国 SunSoft, Inc. の X.500 ディレクトリ製品が、新しく導入された複合 ASN.1 構文をサポートしていないためです。その代わりに、FNS では XFN 補助オブジェクトクラスを使用します。

ASN.1 では、次のような 2 つの新しいオブジェクトクラスが定義されています。

xFN OBJECT-CLASS ::= {
			SUBCLASS OF					{ top }
			KIND						auxiliary
			MAY CONTAIN				{ objectReferenceId |
											objectReference |
											nNSReferenceId |
											nNSReference }
					ID						id-oc-xFN
			}
			id-oc-xFN OBJECT IDENTIFIER ::= {
				iso(1) member-body(2) ansi(840) sun(113536)
             ds-oc-xFN(24)
			}
xFNSupplement OBJECT-CLASS ::= {
			SUBCLASS OF					{ top }
			KIND							auxiliary
			MAY CONTAIN					{ objectReferenceString |
											nNSReferenceString }
					ID						id-oc-xFNSupplement
		}
			iso(1) member-body(2) ansi(840) sun(113536)
			ds-oc-xFNSupplement(25)
				}

XFN 補助オブジェクトクラスは、補助オブジェクトクラスとして定義されているため、X.500 のオブジェクトクラスすべてに引き継がれる可能性があります。XFN 補助オブジェクトクラスは、以下の 2 つの任意属性によって定義されます。

ASN.1 では、この 2 つの属性を以下のように定義しています。

objectReferenceString ATTRIBUTE ::= {
			WITH SYNTAX             OCTET STRING
			EQUALITY MATCHING RULE  octetStringMatch
			SINGLE VALUE            TRUE
			ID                      { id-at-objectReferenceString }
	}
	id-at-objectReferenceString OBJECT IDENTIFIER ::= {
			iso(1) member-body(2) ansi(840) sun(113536)
			ds-at-objectReferenceString(30)
		}
		nNSReferenceString ATTRIBUTE ::= {
				WITH SYNTAX            OCTET STRING
				EQUALITY MATCHING RULE octetStringMatch
				SINGLE VALUE           TRUE
				ID                     { id-at-nNSReferenceString }
			}
			id-at-nNSReferenceString OBJECT IDENTIFIER ::= {
				iso(1) member-body(2) ansi(840) sun(113536)
				ds-at-nNSReferenceString(31)
			}

objectReferenceStringnNSReferenceString は、共に XFN リファレンスを文字列形式で保存します。それぞれのオクテット列構文は、さらに以下の BNF 定義に準拠するように制約を加えられます。

<ref>							::=	<id> '$' <ref-addr-set>
<ref-addr-set>		::=	<ref-addr> | <ref-addr> '$' <ref-addr-set>
<ref-addr>			::=	<id> '$' <addr-set>
<addr>				::=	<hex-string>
<id>					::= 	'id'   '$' <string> |
									'uuid' '$' <uuid-string> |
									'oid'  '$' <oid-string>
<string>				::=	<char> | <char> <string>
<char>				::=	<PCS> | '¥' <PCS>
<PCS>					::=	// Portable Character Set:
										// !"#$%&'()*+,-./0123456789:;<=>?
										// @ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_
										// `abcdefghijklmnopqrstuvwxyz{|}‾
<uuid-string>		::=	<uuid-char>  | <uuid-char> <uuid-string>
<uuid-char>			::=	<hex-digit> | '-' 
<oid-string>		::=	<oid-char>  | <oid-char> <oid-string>
<oid-char>			::=	<digit> | '.'
<hex-string>		::=	<hex-octet> | <hex-octet> <hex-string>
<hex-octet>			::=	<hex-digit> <hex-digit>
<hex-digit>			::=	<digit> |
										'a' | 'b' | 'c' | 'd' | 'e' | 'f' |
 									'A' | 'B' | 'C' | 'D' | 'E' | 'F'
<digit>					::=	'0' | '1' | '2' | '3' | '4' | '5' |
										'6' | '7' | '8' | '9'

以下は、文字列形式の XFN リファレンスの例です。

id$onc_fn_enterprise$id$onc_fn_nisplus_root$0000000f77697a2e636fd2e2062696762696700  

この例では、onc_fn_enterprise というタイプの XFN リファレンスを使用しています。この中には、onc_fn_nisplus_root というアドレスタイプと 1 つのアドレス値があります。アドレス値は XDR によって符号化された文字列で、ドメイン名、doc.com の後にホスト名 cygnus が続く形で構成されています。

XFN リファレンスは、fnattr という FNS コマンドを使用して X.500 のエントリに加えることができます。この例では、次のように入力すると、c=us/o=doc という新しいエントリが作成され、オブジェクトクラスの属性と最上位組織XFN 補助の値が加えられます。

# fnattr -a .../c=us/o=doc object-class top organization xfn-supplement

fnbind という FNS コマンドは、NIS+ リファレンスを命名されたエントリにバインドし、X.500 を NIS+ 名前空間のルートにリンクします。 fnbind の名前因数内の文字の後にスラッシュ (/) が使用されていることに注意してください。

# fnbind -r .../c=us/o=doc/ onc_fn_enterprise onc_fn_nisplus_root
"doc.com. cygnus"