in kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java [83:130]
public TgtTicket requestTgt(KOptions requestOptions) throws KrbException {
AsRequest asRequest = null;
PrincipalName clientPrincipalName = null;
if (requestOptions.contains(KrbOption.USE_PASSWD)) {
asRequest = new AsRequestWithPasswd(context);
} else if (requestOptions.contains(KrbOption.USE_KEYTAB)) {
asRequest = new AsRequestWithKeytab(context);
} else if (requestOptions.contains(PkinitOption.USE_ANONYMOUS)) {
asRequest = new AsRequestWithCert(context);
} else if (requestOptions.contains(PkinitOption.USE_PKINIT)) {
asRequest = new AsRequestWithCert(context);
} else if (requestOptions.contains(TokenOption.USE_TOKEN)) {
asRequest = new AsRequestWithToken(context);
} else if (requestOptions.contains(TokenOption.USER_ID_TOKEN)) {
asRequest = new AsRequestWithToken(context);
}
if (asRequest == null) {
throw new IllegalArgumentException(
"No valid krb client request option found");
}
if (requestOptions.contains(KrbOption.CLIENT_PRINCIPAL)) {
String clientPrincipalString = requestOptions.getStringOption(KrbOption.CLIENT_PRINCIPAL);
clientPrincipalString = fixPrincipal(clientPrincipalString);
clientPrincipalName = new PrincipalName(clientPrincipalString);
if (requestOptions.contains(PkinitOption.USE_ANONYMOUS)) {
clientPrincipalName.setNameType(NameType.NT_WELLKNOWN);
}
asRequest.setClientPrincipal(clientPrincipalName);
}
if (requestOptions.contains(KrbOption.SERVER_PRINCIPAL)) {
String serverPrincipalString = requestOptions.getStringOption(KrbOption.SERVER_PRINCIPAL);
serverPrincipalString = fixPrincipal(serverPrincipalString);
PrincipalName serverPrincipalName = new PrincipalName(serverPrincipalString, NameType.NT_PRINCIPAL);
asRequest.setServerPrincipal(serverPrincipalName);
} else if (clientPrincipalName != null) {
String realm = clientPrincipalName.getRealm();
PrincipalName serverPrincipalName = KrbUtil.makeTgsPrincipal(realm);
asRequest.setServerPrincipal(serverPrincipalName);
}
asRequest.setRequestOptions(requestOptions);
return doRequestTgt(asRequest);
}