Skip to content

Commit 7ea6aa6

Browse files
committed
OPL-7818 update GSSName
1 parent e9a6d76 commit 7ea6aa6

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

client/src/main/java/org/asynchttpclient/spnego/SpnegoEngine.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,10 +156,11 @@ public String generateToken(String host) throws SpnegoEngineException {
156156
// Try SPNEGO by default, fall back to Kerberos later if error
157157
negotiationOid = new Oid(SPNEGO_OID);
158158

159+
boolean tryKerberos = false;
159160
String spn = getCompleteServicePrincipalName(host);
160161
try {
161162
GSSManager manager = GSSManager.getInstance();
162-
GSSName serverName = manager.createName(spn, GSSName.NT_HOSTBASED_SERVICE);
163+
GSSName serverName = getCompleteGSSName(host, manager);
163164
GSSCredential myCred = null;
164165
if (username != null || loginContextName != null || customLoginConfig != null && !customLoginConfig.isEmpty()) {
165166
String contextName = loginContextName;
@@ -195,7 +196,7 @@ public String generateToken(String host) throws SpnegoEngineException {
195196
log.debug("Using Kerberos MECH {}", KERBEROS_OID);
196197
negotiationOid = new Oid(KERBEROS_OID);
197198
GSSManager manager = GSSManager.getInstance();
198-
GSSName serverName = manager.createName(spn, GSSName.NT_HOSTBASED_SERVICE);
199+
GSSName serverName = getCompleteGSSName(host, manager);
199200
gssContext = manager.createContext(serverName.canonicalize(negotiationOid), negotiationOid, null,
200201
GSSContext.DEFAULT_LIFETIME);
201202
gssContext.requestMutualAuth(true);
@@ -244,6 +245,16 @@ public String generateToken(String host) throws SpnegoEngineException {
244245
}
245246
}
246247

248+
GSSName getCompleteGSSName(String host, GSSManager manager) throws GSSException {
249+
if (servicePrincipalName != null && servicePrincipalName.contains("@")) {
250+
log.debug("Service Principal Name is {}", servicePrincipalName);
251+
return manager.createName(servicePrincipalName, GSSName.NT_USER_NAME);
252+
}
253+
254+
String spn = getCompleteServicePrincipalName(host);
255+
return manager.createName(spn, GSSName.NT_HOSTBASED_SERVICE);
256+
}
257+
247258
String getCompleteServicePrincipalName(String host) {
248259
String name;
249260
if (servicePrincipalName == null) {

0 commit comments

Comments
 (0)