2016-10-08 23 views
1

他のアプリケーションとやり取りするときにアプリケーションをユーザーに偽装する必要があるJava Webアプリケーションを作成しています。特定のアプリケーション自体には承認が適用されないため、この委任メカニズムが正しく機能することが最も重要です。使用される認証メカニズムはKerberosです。ユニットテスト用のApacheDS組み込みKerberos KDC

さまざまな認証の側面を検証するために、JUnitで組み込みKDCを実行したいと考えています。私はApacheDSを使用しようとしています。数年前にLDAPでこれを行う方法の例がいくつかありました。例はhereに従っています。

@RunWith(FrameworkRunner.class) 
@CreateDS(name = "KerberosTcpITest", partitions = {@CreatePartition(name = "example", suffix = "dc=example,dc=com")}, additionalInterceptors = {KeyDerivationInterceptor.class}) 
@CreateLdapServer(transports = {@CreateTransport(protocol = "LDAP")}) 
@CreateKdcServer(transports = {@CreateTransport(protocol = "TCP", port = 6086)}) 
@ApplyLdifFiles("example.ldif") 
public class EmbeddedKerberos101 { 

    @Test 
    public void test() { 
    } 

} 

私はLDIFファイルのスキーマ/ OU =スキーマ/ CN = apachedns/OU =を見つけるためにしようとしてエラーが発生します:リンクされている例に続いて、私はこのスモークテストを実行すると、ステップ1の作業をすることはできませんobjectclasses/m-oid = 1.3.6.1.4.1.18060.0.4.2.3.9.ldifは、my @ApplyLdifFiles注釈のように見えますが、無視されており、デフォルトに戻されています。

スタックトレースがある:私のテストリソースで

org.apache.directory.api.ldap.schema.extractor.UniqueResourceException: Problem locating LDIF file in schema repository 
Multiple copies of resource named 'schema/ou=schema/cn=apachedns/ou=objectclasses/m-oid=1.3.6.1.4.1.18060.0.4.2.3.9.ldif' located on classpath at urls 
jar:file:/Users/*/.m2/repository/org/apache/directory/api/api-ldap-schema-data/1.0.0-RC1/api-ldap-schema-data-1.0.0-RC1.jar!/schema/ou%3dschema/cn%3dapachedns/ou%3dobjectclasses/m-oid%3d1.3.6.1.4.1.18060.0.4.2.3.9.ldif 
jar:file:/Users/*/.m2/repository/org/apache/directory/server/apacheds-all/2.0.0-M15/apacheds-all-2.0.0-M15.jar!/schema/ou%3dschema/cn%3dapachedns/ou%3dobjectclasses/m-oid%3d1.3.6.1.4.1.18060.0.4.2.3.9.ldif 

at org.apache.directory.api.ldap.schema.extractor.impl.DefaultSchemaLdifExtractor.getUniqueResource(DefaultSchemaLdifExtractor.java:358) 
at org.apache.directory.api.ldap.schema.extractor.impl.DefaultSchemaLdifExtractor.getUniqueResourceAsStream(DefaultSchemaLdifExtractor.java:335) 
at org.apache.directory.api.ldap.schema.extractor.impl.DefaultSchemaLdifExtractor.extractFromClassLoader(DefaultSchemaLdifExtractor.java:373) 
at org.apache.directory.api.ldap.schema.extractor.impl.DefaultSchemaLdifExtractor.extractOrCopy(DefaultSchemaLdifExtractor.java:165) 
at org.apache.directory.api.ldap.schema.extractor.impl.DefaultSchemaLdifExtractor.extractOrCopy(DefaultSchemaLdifExtractor.java:185) 
at org.apache.directory.server.core.factory.DefaultDirectoryServiceFactory.initSchema(DefaultDirectoryServiceFactory.java:172) 
at org.apache.directory.server.core.factory.DefaultDirectoryServiceFactory.build(DefaultDirectoryServiceFactory.java:256) 
at org.apache.directory.server.core.factory.DefaultDirectoryServiceFactory.init(DefaultDirectoryServiceFactory.java:125) 
at org.apache.directory.server.core.factory.DSAnnotationProcessor.createDS(DSAnnotationProcessor.java:96) 
at org.apache.directory.server.core.factory.DSAnnotationProcessor.getDirectoryService(DSAnnotationProcessor.java:328) 
at org.apache.directory.server.core.integ.FrameworkRunner.run(FrameworkRunner.java:109) 

私は

[libdefaults] 
default_realm = EXAMPLE.COM 

[realms] 
EXAMPLE.COM = { 
    kdc = localhost:6088 
} 

[domain_realm] 
.example.com = EXAMPLE.COM 
example.com = EXAMPLE.COM 

[login] 
krb4_convert = true 
krb4_get_tickets = false 

をkrb5.confのと

dn: dc=example,dc=com 
objectClass: top 
objectClass: domain 
dc: example 

dn: ou=users,dc=example,dc=com 
objectClass: top 
objectClass: organizationalUnit 
ou: users 

はExample.ldifなぜ煙理由があるきテストは起動しませんか?認証に焦点を当てたユニット/ローカル統合テストでモックKDCを稼働させるプラグアンドプレイの代替手段はありますか?どのように他の開発者が資格委任メカニズムをテストしているのですか?あなたのApacheDSの依存関係からAPI-LDAPスキーマ・データ:

答えて

関連する問題