0

状況:

私は実際に、Java アプリケーション内の LDAP ソースから連絡先情報を読み取っています。見つかった SearchResult には、必要なすべての値が含まれています。問題はありません。SearchResult が利用可能になったら、その属性を読み取る必要があります。読み取る属性は、ユーザーが構成ファイルで指定します。

例で説明した問題:

ユーザーは、プロパティ「stateOrProvinceName」を読み取るように指定します。LDAP はこれを「st」として処理します。返される Searchresult には、「st」をキーとする key=>value ペアが含まれます。「stateOrProvinceName」を調べても、もちろん見つかりません。その「st」キーが必要ですが、代替 Ldap フィールド名の mappnig を手動でコーディングしたくありません。関連するコード部分:

Attributes ldapAttributes = foundContact.getAttributes();
Attribute wantedAttribute = ldapAttributes.get(ldapFieldName);

説明: 「foundContact」は SearchResult です。その属性を「ldapAttributes」に保存します。「ldapFieldName」は名前であり、構成ファイルで指定されたユーザー (「stateOrProvinceName」など) です。この属性を取得して「wantedAttribute」に保存しようとします。「stateOrProvinceName」が含まれていない場合、「wantedAttribute」はもちろん null です。しかし、「st」が存在するので、これを null にしたくありません;)

質問:

属性の 1 つの名前を指定して、すべての代替名のリストを取得する「簡単な」方法はありますか?

御時間ありがとうございます!

4

1 に答える 1

0

そのためのRFCのアプローチは、エントリのsubschemaSubentry参照スキーマ定義で属性定義を見つけることです。( RFC 4512の p32 )

たとえば、OpenLDAP はこの情報を cn=Subschema に保存します。残念ながら、このエントリは、最初に自分で解析する必要がある属性定義形式を使用しています。

attributetype ( 2.5.4.8 
    NAME ( 'st' 'stateOrProvinceName' ) 
    DESC 'RFC2256: state or province which this object resides in' 
    SUP name ) 

Iirc/maybe UnboundID の LDAP SDK には、この目的のためのパーサーが追加されました。

于 2013-09-11T16:17:27.723 に答える