我正在使用 kerberos 身份验证登录到 ActiveDirectory。我正在使用 GSSAPI 进行操作。
目前,我正在使用 krb5.conf 文件,该文件描述了领域、加密算法等,并且身份验证工作正常。
我想避免使用这个文件。我可以在不使用此文件的情况下以编程方式配置 kerberos 吗?
谢谢。
您可以尝试仅配置两个系统属性:
java.security.krb5.kdc
java.security.krb5.realm
请注意,如果您使用 JDK 对 Kerberos 的本机支持,则无法以编程方式配置除此之外的任何内容。
如果您正在为 Windows 编写代码,我强烈建议您使用 WAFFLE 来实现无缝单点登录。不过,它没有 GSS-API 适配器。我自己写了,但这只是因为系统的其余部分已经依赖它了。您可以轻松跳过 GSS-API 并直接针对 WAFFLE 进行编程。
如果您只想避免使用系统范围的 krb5.conf,则可以在程序中以任何名称(例如,在您的主目录中)的任何目录中创建它,并通过设置 Java 系统属性 java.security.krb5 来使用它。 conf 到它的完整路径。我相信这必须在您调用任何与 Kerberos 相关的代码之前完成。
[来自 MIT 官方文档: https://web.mit.edu/kerberos/krb5-latest/doc/admin/index.html]
似乎我们可能没有官方的方法来配置没有 krb5.conf 的 Kerberos,即使忽略 keytabs 的某些部分(它们被定义为在 TGS 状态下自动获取,但有时事情正在连接)会导致致命错误。