【问题标题】:Has anyone configured Kerberos SSO on Web Logic 12.1.2 with JDK 1.7 on Win 2012 successfully?有没有人在 Win 2012 上使用 JDK 1.7 在 Web Logic 12.1.2 上成功配置 Kerberos SSO?
【发布时间】:2015-01-11 17:42:57
【问题描述】:

我正在尝试在 Win 2012 R2 上使用 JDK 1.7.x 在 Web Logic 12.1.2 上配置 Kerberos SSO。我正在使用Java ktab java command to create keytab file。加密包括 DES 和 rc4-hmac。我的 kerberos ini 文件 只使用 rc4-hmac 加密。 但是当我尝试登录我的应用程序时,我在 Web Logic 日志文件(片段)中收到此错误:

####<Nov 13, 2014 7:24:29 AM PST> <Debug> <SecurityAtn> <ifvm00131> <ICN_ManagedServer_2> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1415892269395> <BEA-000000> <acceptGssInitContextToken failed
com.bea.security.utils.kerberos.KerberosException: Failure unspecified at GSS-API level (Mechanism level: Encryption type AES256 CTS mode with HMAC SHA1-96 is not supported/enabled)
    at com.bea.security.utils.kerberos.KerberosTokenHandler.acceptGssInitContextTokenInDoAs(KerberosTokenHandler.java:351)
    at com.bea.security.utils.kerberos.KerberosTokenHandler.access$100(KerberosTokenHandler.java:43)
    at com.bea.security.utils.kerberos.KerberosTokenHandler$2.run(KerberosTokenHandler.java:239)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAsPrivileged(Subject.java:536)
    at com.bea.security.utils.kerberos.KerberosTokenHandler.acceptGssInitContextToken(KerberosTokenHandler.java:237)
    at com.bea.security.utils.kerberos.KerberosTokenHandler.acceptGssInitContextToken(KerberosTokenHandler.java:165)
    at com.bea.common.security.internal.utils.negotiate.SPNEGONegotiateToken.getUsername(SPNEGONegotiateToken.java:57)
    at weblogic.security.providers.authentication.NegotiateIdentityAsserterProviderImpl.assertChallengeIdentity(NegotiateIdentityAsserterProviderImpl.java:210)
    at com.bea.common.security.internal.legacy.service.ChallengeIdentityAssertionProviderImpl$ChallengeIdentityAsserterV2Adapter.assertChallengeIdentity(ChallengeIdentityAssertionProviderImpl.java:130)
    at com.bea.common.security.internal.service.ChallengeIdentityAssertionTokenServiceImpl.assertChallengeIdentity(ChallengeIdentityAssertionTokenServiceImpl.java:120)

并且登录我的应用程序不成功。我进入浏览器错误401--未经授权的错误

当我使用 AES256 加密重新配置环境时,我收到 Checksum failed 错误。

不知道有没有人遇到过类似的问题并成功解决了?

这是我位于 c:\windows 目录中的 krb5.ini 文件

[libdefaults]
    default_realm = MYREALM.LOCAL
    kdc_timesync = 1
    ccache_type = 4
    forwardable = true
    proxiable = true
    default_tgs_enctypes = rc4-hmac
    default_tkt_enctypes = rc4-hmac
    ticket_lifetime = 600

[realms]
    MYREALM.LOCAL = {
        kdc = adhostname.mydomain.local:88
        admin_server = adhostname.mydomain.local
        default_domain = mydomain.local
    }

[domain_realm]
    mydomain.local = MYREALM.LOCAL
    .mydomain.local = MYREALM.LOCAL

这是我的配置文件

com.sun.security.jgss.krb5.initiate 
{
   com.sun.security.auth.module.Krb5LoginModule required
   principal="account@REALM.LOCAL" useKeyTab=true
   keyTab="C:\\sso\\wlker.keytab" storeKey=true debug=true;
};

com.sun.security.jgss.krb5.accept 
{
   com.sun.security.auth.module.Krb5LoginModule Required
   principal="account@REALM.LOCAL" useKeyTab=true
   keyTab="C:\\sso\\wlker.keytab" storeKey=true debug=true;
};

Myapp
{
weblogic.security.auth.login.UsernamePasswordLoginModule required authOnLogin=true;
};

【问题讨论】:

  • 为什么主要领域与 krb5.conf 中的领域不同?
  • 很好,但在这个例子中,这只是一个错字对不起。它是 MYREALM.LOCAL 在我的真实环境中它们是相同的。

标签: kerberos


【解决方案1】:

我之前已经回答过了。请搜索,您必须启用/安装无限安全策略。

【讨论】:

  • 感谢您的回复。我应该补充一点,我没有使用 AES256 加密,我使用的是 rc4-hmac 加密,但我仍然收到有关 AES256 加密的错误。我还尝试使用 AES256 加密完全重新配置我的环境,包括替换无限安全策略 JDK 1.7 jar 文件,但我得到了不同的错误,正如我上面提到的校验和失败错误。
  • @Irina,有人选择 AES256,可能是您的客户。请在您的问题中发布完整的krb5.conf
  • 我将主体名称和域名替换为更通用的这篇文章。
  • mydomain.local 与 MYREALM.LOCAL 同名
  • 道歉。我是第一次使用这个网站。我在上面的问题中添加了这两个文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-12
  • 2011-01-21
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多