gpt4 book ai didi

带有 JAAS 和多个领域的 Kerberos 身份验证

转载 作者:行者123 更新时间:2023-12-03 17:54:23 25 4
gpt4 key购买 nike

全部,

任何人都可以提供有关如何使用 JAAS LoginContext 对多个 KDC/Realm 组合进行身份验证的建议。换句话说,如果尝试 1 对领域 A 失败,则尝试领域 B。

类似于下面的伪代码。

与往常一样,非常感谢任何帮助。

查看普通副本到剪贴板打印?

[realms]   
some.address.for.auth.one
{
kdc = some.address.one
}

some.address.for.auth.two
{
kdc = some.address.two
}

boolean loginSuccess = false;

try
{
LoginContext lc = new LoginContext(...);
//Try Realm 1
lc.login();
loginSuccess = true;
}
catch(LoginException le)
{
try
{
LoginContext lc2 = new LoginContext(...);
//Try Realm 2
lc2.login();
loginSuccess = true;
}
catch(LoginException le)
{
//...
}
}

return loginSuccess;

最佳答案

这是可能的。例如,您可以将每个配置放在单独的文件中,然后在每次尝试开始时将 Java 路径传递给 krb5.ini 和 login.conf 文件:

boolean loginSuccess = false;  

try
{
System.setProperty("java.security.krb5.conf", "C:\kerb\conf1\krb5.ini");
System.setProperty("java.security.auth.login.config", "C:\kerb\conf1\login.conf");
// in login.conf you can have defined path to keytab for this configuration

LoginContext lc = new LoginContext(...);
//Try Realm 1
lc.login();
loginSuccess = true;
}
catch(LoginException le)
{
try
{
System.setProperty("java.security.krb5.conf", "C:\kerb\conf2\krb5.ini");
System.setProperty("java.security.auth.login.config", "C:\kerb\conf2\login.conf");
// in login.conf you can have defined path to keytab for this configuration

LoginContext lc2 = new LoginContext(...);
//Try Realm 2
lc2.login();
loginSuccess = true;
}
catch(LoginException le)
{
//...
}
}

return loginSuccess;

此处描述了这两个系统属性:
http://docs.oracle.com/javase/7/docs/technotes/guides/security/jgss/tutorials/LoginConfigFile.html
http://docs.oracle.com/javase/7/docs/technotes/guides/security/jgss/tutorials/KerberosReq.html

另一种可能是没有文件的配置。有一个 LoginContext 构造函数,它接受 CallbackHandler(这里传递用户名和密码)和 Configuration(这里传递 login.conf 中的参数)。 Kdc 和领域可以在系统属性 java.security.krb5.realm 和 java.security.krb5.kdc 中传递

http://docs.oracle.com/javase/8/docs/api/javax/security/auth/login/LoginContext.html#LoginContext-java.lang.String-javax.security.auth.Subject-javax.security.auth.callback.CallbackHandler-javax.security.auth.login.Configuration-

关于带有 JAAS 和多个领域的 Kerberos 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13626971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com