【发布时间】:2013-01-18 21:40:25
【问题描述】:
是否有人知道任何可嵌入的 Kerberos 服务器 (KDC / KAdmin),它们是用 Java 编写的并且可能只在 JVM 进程中运行(比如 Hadoop 微型集群或嵌入式 LDAP 服务器)?
我的目标是让人们运行需要 Kerberos 身份验证的集成测试,而无需安装本地 kerberos 服务器/配置远程服务器并连接到它。
【问题讨论】:
标签: java integration-testing kerberos
是否有人知道任何可嵌入的 Kerberos 服务器 (KDC / KAdmin),它们是用 Java 编写的并且可能只在 JVM 进程中运行(比如 Hadoop 微型集群或嵌入式 LDAP 服务器)?
我的目标是让人们运行需要 Kerberos 身份验证的集成测试,而无需安装本地 kerberos 服务器/配置远程服务器并连接到它。
【问题讨论】:
标签: java integration-testing kerberos
您可以试试 Apache Directory Server (http://directory.apache.org/)。它支持 LDAP 和 Kerberos。看这个例子:
【讨论】:
我也在/正在寻找这样的东西,但这根本不可能,因为您需要一个功能齐全的 DNS 服务器。完全解耦的系统是必要的。您可以通过 virtualization-maven-plugin 和 VirtualBox 中的一组具有内部网络的虚拟机来实现这一点。
LDAP 服务器根本无法帮助您,因为它们对 GSS-API 和 Kerberos 完全没有任何作用。 SASL 通过将身份验证委托给下一个可用的 KDC 来完成所有工作。
您需要 KDC 和 DNS 服务器。您可以在一台机器上尝试 Samba 4,设置第二台加入 域。在其上安装 Hadoop,添加第三个(客户端),从那里加入并运行测试。
您似乎可以让 Apache DS 模仿 KDC:http://directory.apache.org/apacheds/configuration/ads-2.0-configuration.html
【讨论】:
/etc/hots。
我为类似目的编写了一个嵌入式 LDAP,您也可以使用它来测试 Kerberos,这对于测试 Hadoop Kerberos 测试等情况特别有用。
https://github.com/krishdey/EmbeddedLdapKDC
你也可以看看编写嵌入式JUnit测试的类https://github.com/krishdey/EmbeddedLdapKDC/blob/master/EmbeddedLdapKDC/src/test/java/com/krish/ead/server/KerberosLdapIntegrationTest.java
可能对你有用。
【讨论】:
Hadoop 发布了一个可以使用的 MiniKdc 类。来自 MiniKdc 类文档评论:
基于 Apache Directory Server 的迷你 KDC,可嵌入测试用例或从命令行用作独立 KDC。
https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-minikdc
【讨论】: