2

spring-security で LDAP 認証を使用しています。何らかの理由で LDAP サーバーがなくspring-security.xml、LDIF ファイルを使用するように構成しました。

ユーザーに対して呼び出されるカスタム属性を追加する必要がありtypeます。そこで、ここで述べたようにobjectclassとを作成しました。 attributetypes

LDIF ファイルは次のようになります。

dn: cn=subschemasubentry 
changetype: modify 
add: attributetypes 
attributetypes: ( 1.2.3.4.5.6.7 NAME 'type' DESC 'New attribute definition'  
 EQUALITY caseIgnoreMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' ) 

dn: cn=subschemasubentry
changetype: modify
add: objectClasses
objectClasses: ( 1.2.3.4.56789.1.0.200 NAME 'testUser' 
 SUP ( inetOrgPerson ) STRUCTURAL
 MUST cn 
 MAY type )

dn: ou=users,dc=springframework,dc=org
objectclass: top
objectclass: organizationalUnit
ou: users

dn: uid=testuser1,ou=users,dc=springframework,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: testUser
mail: test1@test.com
cn: Some Name
sn: someName
uid: someId
type: someType
userPassword: pass1

ただし、NameNotFoundExceptionREST 呼び出し (によって保護されてspring-securityいる) をエラーで使用しようとすると、これは失敗します。

LDAP: error code 32 - NO_SUCH_OBJECT: 
...
...
Attempt to search under non-existant entry: ou=users,dc=springframework,dc=org];
nested exception is javax.naming.NameNotFoundException:

カスタム属性とカスタム objectclass を削除し、ユーザー データを に変更すると、objectclass: inetOrgPerson正常に動作します。

どうすればobjectclassと 属性を追加できますか?

4

1 に答える 1

2

LDIF ファイルでスキーマを使用しようとしましたが、これは間違っていました。ApacheDS を使用して、カスタム属性とカスタム objectclass を持つ新しいスキーマを作成しました。次に、それらをLDIFにエクスポートしました。

spring-security に使用される LDIF ファイルに追加した結果の LDIF。

オブジェクトクラスを読み取っても、Springがエントリから新しい属性を読み取らないことは別の問題です。

于 2014-06-20T19:54:40.463 に答える