The Kerberos configuration properties, krb5.ini or krb5.conf files, must be configured on every WebSphere Application Server instance in a cell in order to use the Simple and Protected GSS-API Negotiation Mechanism (SPNEGO) trust association interceptor (TAI) for WebSphere Application Server.
The default Kerberos configuration file on Windows is /winnt/krb5.ini and on a distributed environment is /etc/krb5. If you specify another location path, then also specify the java.security.krb5.conf JVM property.
For example, if your krb5.conf file is specified at /opt/IBM/WebSphere/profiles/AppServer/etc/krb5.conf, then you need to specify -Djava.security.krb5.conf=/opt/IBM/WebSphere/profiles/AppServer/etc/krb5.conf. The WebSphere runtime code searches for the Kerberos configuration file in the order as follows:
Use the wsadmin utility to configure the SPNEGO TAI for WebSphere Application Server:
$AdminTask createKrbConfigFile You can use the following parameters with this command:
Option | Description |
---|---|
<krbPath> | This parameter is required. It provides the fully qualified file system location of the Kerberos configuration (krb5.ini or krb5.conf) file. |
<realm> | This parameter is required. It provides the Kerberos realm name. The value of this attribute is used by the SPNEGO TAI to form the Kerberos service principal name for each of the hosts specified with the property com.ibm.ws.security.spnego.SPN<id>.hostName. |
<kdcHost> | This parameter is required. It provides the host name of the Kerberos Key Distribution Center (KDC). |
<kdcPort> | This parameter is optional. It provides the port number of the KDC. The default value, if not specified, is 88. |
<dns> | This parameter is required. It provides the default domain name service (DNS) that is used to produce a fully qualified host name. |
<keytabPath> | This parameter is required. It provides the file system location of the Kerberos keytab file. |
<encryption> | This parameter is optional. It identifies the list of supported encryption types, separated by a space. The specified value is used for the default_tkt_enctypes and default_tgs_enctypes. The default encryption types, if not specified, are des-cbc-md5 and rc4-hmac. |
In the following example, the wsadmin command creates the krb5.ini file in the c:\winnt directory. The default Kerberos keytab file is also in c:\winnt. The actual Kerberos realm name is WSSEC.AUSTIN.IBM.COM and the KDC host name is host1.austin.ibm.com.
wsadmin>$AdminTask createKrbConfigFile {-krbPath c:\winnt\krb5.ini -realm WSSEC.AUSTIN.IBM.COM -kdcHost host1.austin.ibm.com -dns austin.ibm.com -keytabPath c:\winnt\krb5.keytab}The wsadmin command above creates a krb5.ini file as follows:
[libdefaults] default_realm = WSSEC.AUSTIN.IBM.COM default_keytab_name = FILE:c:\winnt\krb5.keytab default_tkt_enctypes = des-cbc-md5 rc4-hmac default_tgs_enctypes = des-cbc-md5 rc4-hmac [realms] WSSEC.AUSTIN.IBM.COM = { kdc = host1.austin.ibm.com:88 default_domain = austin.ibm.com } [domain_realm] .austin.ibm.com = WSSEC.AUSTIN.IBM.COM
Note: A Kerberos keytab file contains a list of keys that are analogous to user passwords. It is important for hosts to protect their Kerberos keytab files by storing them on the local disk. The krb5.conf file permission must be 644, which means that you can read and write the file; however, members of the group that the file belongs to, and all others can only read the file. The krb5.conf configuration file supports trigraphs to represent the {, }, [, and ] characters. These characters depend on the language set. The natively generated keytabs cannot be read by the Kerberos client. If you have difficulty configuring SPNEGO TAI with the native krb5.conf or krb5.keytab files, complete one of the following scenarios to address the trigraphs issue:
Kerberos configuration settings, the Kerberos key distribution
center (KDC) name, and realm settings for the Simple and Protected GSS-API
Negotiation Mechanism (SPNEGO) trust association interceptor (TAI) are provided
in the Kerberos configuration file or through java.security.krb5.kdc and java.security.krb5.realm system
property files.