【问题标题】:Java-written embedded Kerberos server for testing用于测试的 Java 编写的嵌入式 Kerberos 服务器
【发布时间】:2013-01-18 21:40:25
【问题描述】:

是否有人知道任何可嵌入的 Kerberos 服务器 (KDC / KAdmin),它们是用 Java 编写的并且可能只在 JVM 进程中运行(比如 Hadoop 微型集群或嵌入式 LDAP 服务器)?

我的目标是让人们运行需要 Kerberos 身份验证的集成测试,而无需安装本地 kerberos 服务器/配置远程服务器并连接到它。

【问题讨论】:

    标签: java integration-testing kerberos


    【解决方案1】:

    【讨论】:

    • @Michael-O 这个测试演示了 KDC 的功能,它可以嵌入并在纯 java 中实现。
    • 是的,谢谢 - 刚刚有时间回到这个任务,看起来这是一条路要走。我会尝试并在这里报告它是否按预期工作并且它会导致任何意想不到的痛苦。谢谢你们!
    • 这个例子是最新的并且仍然是推荐的方法吗?
    【解决方案2】:

    我也在/正在寻找这样的东西,但这根本不可能,因为您需要一个功能齐全的 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

    【讨论】:

    • 我认为我不需要 DNS,我可以提供 IP 并使用它们,但我确实需要将 KDC 实现为 java 应用程序并在测试过程中运行..还没有找到。
    • 不,这行不通。 Kerberos 需要 DNS 没有它 工作,除非您可能将所有主机放入您的 /etc/hots
    • 这很好,我可以将所有需要的主机放在那里,或者让它始终使用 localhost 进行所有通信。
    • 谢谢,会尝试这样做并报告它对我的影响
    【解决方案3】:

    我为类似目的编写了一个嵌入式 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

    可能对你有用。

    【讨论】:

      【解决方案4】:

      Hadoop 发布了一个可以使用的 MiniKdc 类。来自 MiniKdc 类文档评论:

      基于 Apache Directory Server 的迷你 KDC,可嵌入测试用例或从命令行用作独立 KDC。

      https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-minikdc

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-17
        • 1970-01-01
        • 2011-09-30
        • 2010-10-30
        • 1970-01-01
        • 2014-06-04
        • 2010-10-07
        • 1970-01-01
        相关资源
        最近更新 更多