繁体   English   中英

使用Kerberos和WAS7对应用程序用户进行身份验证

[英]Authenticate application users using Kerberos and WAS7

我花了一段时间努力使事情并肩解决这个问题,但是没有运气。 我正在尝试使用Kerberos通过AD对我的Java应用程序用户进行身份验证。 我创建了如下的KDC:

[libdefaults]
default_realm = X.LOCAL
default_tkt_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1 rc4-hmac arcfour-hmac arcfour-hmac-md5 aes128-cts-hmac-sha1-96 
default_tgs_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1 rc4-hmac arcfour-hmac arcfour-hmac-md5 aes128-cts-hmac-sha1-96 
permitted_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1 rc4-hmac arcfour-hmac arcfour-hmac-md5 aes128-cts-hmac-sha1-96 

[realms]
X.LOCAL = {
kdc = machine_name.X.LOCAL 
default_domain = X.LOCAL 
}

[domain_realm]
.X.LOCAL = X.LOCAL

我定义了一个新领域,如下所示:•全局安全性> JAAS –应用程序登录名•创建了一个名为“ client”的新登录名,并分配了com.ibm.ws.security.auth.kerberos.Krb5LoginModuleWrapperClient资源。

在代码级别,我正在设置KDC的路径: System.setProperty(java.security.krb5.conf, “KDC” path);

尝试登录:

loginContext = new LoginContext(moduleName, getUsernamePasswordHandler(userName, secret));
loginContext.login();

我正进入(状态:

登录错误:com.ibm.security.krb5.KrbException,状态码:14消息:KDC不支持加密类型

您会说不支持加密类型:)我知道。

问:1)我想念什么?(在这里呆了一周以上)2)我做错了什么?

感谢您的时间。

在我回答您的问题之前,您必须清理配置,然后重试:

  1. 省略* _enctypes,让它们协商最佳的enctype。
  2. 不要从应用程序内部设置属性。 传递krb5.conf位置和一个env属性。 这给您充分的灵活性。
  3. 您应该使用票证缓存或密钥表。 没有必要从客户端再次请求凭据。 这将使Kerberos成为多余。 您只需登录一次操作系统,然后使用票证缓存。
  4. 不要使用DES加密,它是不安全的,不推荐使用。
  5. 确保您拥有的TGT至少具有RC4(Arcfour)加密。

您的问题可能是这样的:

AD是Windows Server 2008,已禁用DES,但您允许使用DES。 这行不通。 出于良好原因,DES在2008年被禁用,或者您的客户端在顶部的enctypes列表中使用AES发送了初始请求。 Windows Server 2003无法处理该问题。 最常见的分母是RC4-HMAC。

使用Wireshark检查流量。 这将帮助您全面了解该问题和Kerberos。 编写一个隔离的测试程序,这将帮助您作为概念验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM