1

这是我的krb5.ini文件。

    [libdefaults]
        default_realm = TEST.EXAMPLE.COM
        .....
    [realms]
        TEST.EXAMPLE.COM = {
            kdc = test.example.com:88
            master_kdc = test.example.com:88
            default_domain = example.com
        }
    [domain_realm]
    .example.com = EXAMPLE.COM
    example.com = EXAMPLE.COM

我在USERA域上创建了一个用户,使用创建了一个凭据kinit并将我的 jaas.config 文件定义为

    example_config {
    com.ibm.security.auth.module.Krb5LoginModule required
        useDefaultCcache=false
        principal="userA@TEST.EXAMPLE.COM"  
        useCcache="file:///c:/Users/userA/krb5cc_userA"
        debug=true;
    };

一切似乎都很好,因为它得到了认证。

    [JGSS_DBG_CRED] Retrieving Kerberos creds from cache for principal=userA@TEST.EXAMPLE.COM
    [JGSS_DBG_CRED] Non-interactive login; no callbacks necessary.
    [JGSS_DBG_CRED] Done retrieving Kerberos creds from cache
    [JGSS_DBG_CRED] Login successful
    [JGSS_DBG_CRED] userA@TEST.EXAMPLE.COM added to Subject
    [JGSS_DBG_CRED] Kerberos ticket for userA@TEST.EXAMPLE.COM added to Subject
    [JGSS_DBG_CRED] No keys to add to Subject for userA@TEST.EXAMPLE.COM

但是现在,我正在尝试使用服务主体名称,而不是用户主体。我曾经ktpass创建一个keytab文件

ktpass -out "c:\mytab.keytab" -princ "Installation1/test.example.com@TEST.EXAMPLE.COM" -mapUser "TEST\userA" -mapOp set -pass password -crypto DES-CBC-MD5 -pType KRB5_NT_PRINCIPAL +DesOnly

然后用于setspn检查

  C:\>setspn -l userA
Registered ServicePrincipalNames for CN=userA,CN=Users,DC=test,DC=example,DC=com:
   Installation1/test.example.com

我将我的配置更改为

    example_config{
      com.ibm.security.auth.module.Krb5LoginModule required
                credsType = both                
               principal="userA/test.example.com"
               useDefaultCcache = true     
               useDefaultKeytab = false
                useKeytab = "file:///c:/mytab.keytab"
                debug=true;   
    };

现在当我运行我的应用程序时,它给出了

    [JGSS_DBG_CRED] Retrieving Kerberos creds from keytab for principal=Installation1/test.example.com
    [JGSS_DBG_CRED] Service name=Installation1/test.example.com@TEST.EXAMPLE.COM
    [JGSS_DBG_CRED] Check for Default keytab : 
    [JGSS_DBG_CRED] No Kerberos creds in keytab for principal Installation1/test.example.com
    [JGSS_DBG_CRED] No service key in keytab; login failed

我在配置文件中做错了什么?还是我在ktpass命令中遗漏了什么?Installation1是我去检查控制面板-> 服务时的服务名称(Websphere MQ)。我想验证 userA 以使用 Websphere MQ 服务。(例如,如果我想让用户使用 HTTP,我会将主体设置为HTTP/.....TEST.EXAMPLE.COM

谢谢

4

1 回答 1

1

MQ 中没有执行身份验证的内容。MQ 仅通过其 OAM 模块执行授权(权限查找)。

对于 MQ 的默认安装(在包括 z/OS 在内的任何平台上),MQ 中没有有效的安全性。您可以将 MQ 配置为在客户端应用程序和队列管理器之间(或在 2 个队列管理器之间)使用 MQ SSL。

另一种选择是购买第三方 MQ 安全解决方案,例如 MQAUSX,它处理对各种目标的身份验证。

于 2014-02-03T16:37:22.577 回答