You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by co...@apache.org on 2016/01/08 12:31:34 UTC

svn commit: r1723701 - /webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/securityToken/KerberosServiceSecurityTokenImpl.java

Author: coheigea
Date: Fri Jan  8 11:31:34 2016
New Revision: 1723701

URL: http://svn.apache.org/viewvc?rev=1723701&view=rev
Log:
Fixing Kerberos issue

Modified:
    webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/securityToken/KerberosServiceSecurityTokenImpl.java

Modified: webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/securityToken/KerberosServiceSecurityTokenImpl.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/securityToken/KerberosServiceSecurityTokenImpl.java?rev=1723701&r1=1723700&r2=1723701&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/securityToken/KerberosServiceSecurityTokenImpl.java (original)
+++ webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/securityToken/KerberosServiceSecurityTokenImpl.java Fri Jan  8 11:31:34 2016
@@ -55,6 +55,7 @@ public class KerberosServiceSecurityToke
     private KerberosTokenDecoder kerberosTokenDecoder;
     private Subject subject;
     private Principal principal;
+    private byte[] sessionKey;
 
     public KerberosServiceSecurityTokenImpl(WSInboundSecurityContext wsInboundSecurityContext, CallbackHandler callbackHandler,
                                             byte[] binaryContent, String kerberosTokenValueType, String id,
@@ -76,6 +77,9 @@ public class KerberosServiceSecurityToke
     }
 
     protected byte[] getTGTSessionKey() throws WSSecurityException {
+        if (sessionKey != null) {
+            return sessionKey;
+        }
         try {
             KerberosContextAndServiceNameCallback contextAndServiceNameCallback = new KerberosContextAndServiceNameCallback();
             callbackHandler.handle(new Callback[]{contextAndServiceNameCallback});
@@ -129,17 +133,15 @@ public class KerberosServiceSecurityToke
 
             Key key = krbServiceCtx.getSessionKey();
             if (key != null) {
-                return key.getEncoded();
-            }
-
-            if (kerberosTokenDecoder != null) {
+                sessionKey = key.getEncoded();
+            } else if (kerberosTokenDecoder != null) {
                 kerberosTokenDecoder.clear();
                 kerberosTokenDecoder.setToken(binaryContent);
                 kerberosTokenDecoder.setSubject(subject);
-                return kerberosTokenDecoder.getSessionKey();
+                sessionKey = kerberosTokenDecoder.getSessionKey();
             }
 
-            return null;
+            return sessionKey;
         } catch (LoginException | UnsupportedCallbackException | IOException e) {
             throw new WSSecurityException(WSSecurityException.ErrorCode.FAILURE, e);
         } catch (KerberosTokenDecoderException e) {