You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pl...@apache.org on 2020/05/15 15:33:15 UTC

[directory-kerby] branch trunk updated: DIRKRB-743 Fix compile error on OpenJDK.

This is an automated email from the ASF dual-hosted git repository.

plusplusjiajia pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/directory-kerby.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 904f3d6  DIRKRB-743 Fix compile error on OpenJDK.
904f3d6 is described below

commit 904f3d6dbe25e449830a48e4da7dd500d656f02f
Author: Li, Jiajia <ji...@intel.com>
AuthorDate: Fri May 15 23:14:38 2020 +0800

    DIRKRB-743 Fix compile error on OpenJDK.
---
 .../apache/kerby/has/client/HasLoginModule.java    | 72 +++++++++++-----------
 1 file changed, 36 insertions(+), 36 deletions(-)

diff --git a/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasLoginModule.java b/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasLoginModule.java
index 0c9bdb7..ca7ce5c 100644
--- a/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasLoginModule.java
+++ b/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasLoginModule.java
@@ -24,10 +24,10 @@ import org.apache.kerby.kerberos.kerb.ccache.Credential;
 import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import sun.security.jgss.krb5.Krb5Util;
-import sun.security.krb5.Credentials;
+
 import sun.security.krb5.KrbException;
 import sun.security.krb5.PrincipalName;
+import sun.security.krb5.RealmException;
 
 import javax.security.auth.DestroyFailedException;
 import javax.security.auth.Subject;
@@ -73,7 +73,7 @@ public class HasLoginModule implements LoginModule {
     private boolean succeeded = false;
     private boolean commitSucceeded = false;
 
-    private Credentials cred = null;
+    private Credential credential = null;
 
     private PrincipalName principal = null;
     private KerberosPrincipal kerbClientPrinc = null;
@@ -222,7 +222,6 @@ public class HasLoginModule implements LoginModule {
                 if (debug) {
                     System.out.println("use tgt ticket to login, acquire TGT TICKET...");
                 }
-
                 HasClient hasClient = new HasClient(hadoopSecurityHas);
                 TgtTicket tgtTicket;
                 try {
@@ -232,43 +231,18 @@ public class HasLoginModule implements LoginModule {
                     le.initCause(e);
                     throw le;
                 }
-                Credential credential = new Credential(tgtTicket);
-                boolean[] flags = new boolean[7];
-                int flag = credential.getTicketFlags().getFlags();
-                for (int i = 6; i >= 0; i--) {
-                    flags[i] = (flag & (1 << i)) != 0;
-                }
-                Date startTime = null;
-                if (credential.getStartTime() != null) {
-                    startTime = credential.getStartTime().getValue();
-                }
-                cred = new Credentials(credential.getTicket().encode(),
-                    credential.getClientName().getName(),
-                    credential.getServerName().getName(),
-                    credential.getKey().getKeyData(),
-                    credential.getKey().getKeyType().getValue(),
-                    flags,
-                    credential.getAuthTime().getValue(),
-                    startTime,
-                    credential.getEndTime().getValue(),
-                    credential.getRenewTill().getValue(),
-                    null);
-
+                credential = new Credential(tgtTicket);
                 // get the principal name from the ticket cache
                 if (principal == null) {
-                    principal = cred.getClient();
+                    principal = new PrincipalName(credential.getClientName().getName(), 1);
                 }
                 if (debug) {
                     System.out.println("Principal is " + principal);
                 }
             }
-        } catch (KrbException e) {
-            LoginException le = new LoginException(e.getMessage());
-            le.initCause(e);
-            throw le;
-        } catch (IOException ioe) {
-            LoginException ie = new LoginException(ioe.getMessage());
-            ie.initCause(ioe);
+        } catch (RealmException ee) {
+            LoginException ie = new LoginException(ee.getMessage());
+            ie.initCause(ee);
             throw ie;
         }
     }
@@ -307,7 +281,7 @@ public class HasLoginModule implements LoginModule {
                 cleanKerberosCred();
                 return false;
             } else {
-                if (isInitiator && cred == null) {
+                if (isInitiator &&  credential == null) {
                     succeeded = false;
                     throw new LoginException("Null Client Credential");
                 }
@@ -323,7 +297,33 @@ public class HasLoginModule implements LoginModule {
 
                 // create Kerberos Ticket
                 if (isInitiator) {
-                    kerbTicket = Krb5Util.credsToTicket(cred);
+                    boolean[] flags = new boolean[7];
+                    int flag = credential.getTicketFlags().getFlags();
+                    for (int i = 6; i >= 0; i--) {
+                        flags[i] = (flag & (1 << i)) != 0;
+                    }
+                    Date startTime = null;
+                    if (credential.getStartTime() != null) {
+                        startTime = credential.getStartTime().getValue();
+                    }
+                    try {
+                        kerbTicket = new KerberosTicket(
+                                credential.getTicket().encode(),
+                                new KerberosPrincipal(credential.getClientName().getName(), 1),
+                                new KerberosPrincipal(credential.getServerName().getName(), 2),
+                                credential.getKey().getKeyData(),
+                                credential.getKey().getKeyType().getValue(),
+                                flags,
+                                credential.getAuthTime().getValue(),
+                                startTime,
+                                credential.getEndTime().getValue(),
+                                credential.getRenewTill().getValue(),
+                                null);
+                    } catch (IOException e) {
+                        LoginException ie = new LoginException(e.getMessage());
+                        ie.initCause(e);
+                        throw ie;
+                    }
                 }
 
                 // Let us add the kerbClientPrinc,kerbTicket