1
다른 응용 프로그램과 상호 작용할 때 응용 프로그램이 사용자를 가장해야하는 Java 웹 응용 프로그램에서 작업하고 있습니다. 특정 응용 프로그램 자체에는 권한이 적용되지 않으므로이 위임 메커니즘이 제대로 작동하는지가 중요합니다. 사용 된 인증 메커니즘은 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는 내 @ApplyLdifFiles 주석처럼 보이지 않으며 기본값이 되돌려집니다.
스택 추적 : 내가
[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
및
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
을 krb5.conf에있는 내 테스트 자원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)
되어있을 이유가 왜 연기 테스트가 시작되지 않습니까? 인증 된 유닛/로컬 통합 테스트에서 모의 KDC를 실행하기 위해 플러그 앤 플레이 방식의 대안이 있습니까? 자격 증명 위임 메커니즘을 테스트하는 다른 개발자들은 어떻게 작동합니까? 당신의 apacheds 종속성에서 API-LDAP 스키마 데이터 : 에