@@ -156,10 +156,11 @@ public String generateToken(String host) throws SpnegoEngineException {
156
156
// Try SPNEGO by default, fall back to Kerberos later if error
157
157
negotiationOid = new Oid (SPNEGO_OID );
158
158
159
+ boolean tryKerberos = false ;
159
160
String spn = getCompleteServicePrincipalName (host );
160
161
try {
161
162
GSSManager manager = GSSManager .getInstance ();
162
- GSSName serverName = manager . createName ( spn , GSSName . NT_HOSTBASED_SERVICE );
163
+ GSSName serverName = getCompleteGSSName ( host , manager );
163
164
GSSCredential myCred = null ;
164
165
if (username != null || loginContextName != null || customLoginConfig != null && !customLoginConfig .isEmpty ()) {
165
166
String contextName = loginContextName ;
@@ -195,7 +196,7 @@ public String generateToken(String host) throws SpnegoEngineException {
195
196
log .debug ("Using Kerberos MECH {}" , KERBEROS_OID );
196
197
negotiationOid = new Oid (KERBEROS_OID );
197
198
GSSManager manager = GSSManager .getInstance ();
198
- GSSName serverName = manager . createName ( spn , GSSName . NT_HOSTBASED_SERVICE );
199
+ GSSName serverName = getCompleteGSSName ( host , manager );
199
200
gssContext = manager .createContext (serverName .canonicalize (negotiationOid ), negotiationOid , null ,
200
201
GSSContext .DEFAULT_LIFETIME );
201
202
gssContext .requestMutualAuth (true );
@@ -244,6 +245,16 @@ public String generateToken(String host) throws SpnegoEngineException {
244
245
}
245
246
}
246
247
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
+
247
258
String getCompleteServicePrincipalName (String host ) {
248
259
String name ;
249
260
if (servicePrincipalName == null ) {
0 commit comments