0


浅析java代码是如何获取kerberos principal 的realm和kdc相关信息的

我们知道,使用 kerberos 时 java 代码中最关键的配置项是指定默认的realm和默认的kdc,一般我们可以通过在代码中配置环境变量 java.security.krb5.realm 和

java.security.krb5.kdc 来指定以上两者的默认值,且这两个配置项总是成对出现的,即要么不做配置,要么一起配置。

那么如果 java 代码中没有配置以上两个系统参数,程序又是如何获取默认的realm和默认的kdc呢?这就涉及到 kerberos 配置文件的具体配置项了(配置文件一般是 krb5.conf )。在此跟大家简单分享下 java 代码是如何寻找 kerberos 配置文件的。

  1. 如果配置了系统参数 java.security.krb5.conf,就使用该变量的值来确定配置文件的目录和具体文件名(文件名不一定总是krb5.conf);

  2. 如果没有配置系统参数 java.security.krb5.conf, 则会尝试从以下目录加载配置文件 krb5.conf: <java-home>\lib\security (Windows) <java-home>/lib/security (Solaris and Linux)

  3. 如果经过以上两步,仍然没有确定 kerberos 配置文件,则会尝试通过以目录确定该配置文件: /etc/krb5/krb5.conf (Solaris) c:\winnt\krb5.ini (Windows) /etc/krb5.conf (Linux)

  4. 经过以上三步,如果仍然没有确定具体的 kerberos 配置文件,则当尝试寻找的不是默认的 realm 和 KDC相关信息时, 程序具体的响应行为跟代码具体实现有关(如com.sun.security.auth.module.Krb5LoginModule);当尝试寻找的是默认的realm 和 KDC相关信息时(当然只有在没有通过配置系统参数java.security.krb5.realm 和 java.security.krb5.kdc 时才会尝试寻找默认的realm 和 kdc 相关信息), 则会抛出异常。

note: 如果配置了系统参数 java.security.krb5.realm 和
java.security.krb5.kdc,则没有办法做 cross-realm authentication,除非在 krb5.conf 中提供了 cross-realm authentication 需要的相应信息。

标签: java linux python

本文转载自: https://blog.csdn.net/MichaelLi916/article/details/119458939
版权归原作者 明哥的IT随笔 所有, 如有侵权,请联系我们删除。

“浅析java代码是如何获取kerberos principal 的realm和kdc相关信息的”的评论:

还没有评论