[java-identity-provider COMMIT] /trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUsernamePas...

noreply at shibboleth.net noreply at shibboleth.net
Sat May 2 20:20:32 EDT 2015


Author: scantor
Date: Sat May  2 20:20:31 2015
New Revision: 7491

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=7491&view=rev
Log:
IDP-114 - rewrite of Kerberos action on top of JAAS module and GSS exchange

Modified:
    trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUsernamePasswordAgainstKerberos.java

Modified: trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUsernamePasswordAgainstKerberos.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUsernamePasswordAgainstKerberos.java?rev=7491&r1=7490&r2=7491&view=diff
==============================================================================
--- trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUsernamePasswordAgainstKerberos.java	(original)
+++ trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUsernamePasswordAgainstKerberos.java	Sat May  2 20:20:31 2015
@@ -17,38 +17,45 @@
 
 package net.shibboleth.idp.authn.impl;
 
-import java.io.File;
-import java.io.IOException;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import java.util.HashMap;
+import java.util.Map;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.security.auth.Subject;
-import javax.security.auth.kerberos.KerberosPrincipal;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.NameCallback;
+import javax.security.auth.callback.PasswordCallback;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import javax.security.auth.login.LoginException;
+import javax.security.auth.spi.LoginModule;
 
 import net.shibboleth.idp.authn.AbstractValidationAction;
 import net.shibboleth.idp.authn.AuthnEventIds;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.context.UsernamePasswordContext;
 import net.shibboleth.idp.authn.principal.UsernamePrincipal;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.component.ComponentSupport;
+import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
+import org.ietf.jgss.GSSContext;
+import org.ietf.jgss.GSSCredential;
+import org.ietf.jgss.GSSException;
+import org.ietf.jgss.GSSManager;
+import org.ietf.jgss.GSSName;
+import org.ietf.jgss.Oid;
 import org.opensaml.profile.action.ActionSupport;
 import org.opensaml.profile.action.EventIds;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
-import sun.security.jgss.krb5.Krb5Util;
-import sun.security.krb5.Config;
-import sun.security.krb5.Credentials;
-import sun.security.krb5.internal.ktab.KeyTab;
-import sun.security.krb5.EncryptionKey;
-import sun.security.krb5.KrbApReq;
-import sun.security.krb5.KrbAsReqBuilder;
-import sun.security.krb5.KrbException;
-import sun.security.krb5.PrincipalName;
 
 /**
  * An action that checks for a {@link UsernamePasswordContext} and directly produces an
@@ -66,10 +73,13 @@
  * ProfileRequestContext, AuthenticationContext, Exception, String)} method is called.
  */
 public class ValidateUsernamePasswordAgainstKerberos extends AbstractValidationAction {
-
+    
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(ValidateUsernamePasswordAgainstKerberos.class);
 
+    /** Class name of JAAS LoginModule to acquire Kerberos credentials. */
+    @NonnullAfterInit @NotEmpty private String loginModuleClassName;
+    
     /** Refresh the Kerberos config before running? */
     private boolean refreshKrb5Config;
     
@@ -81,12 +91,32 @@
     
     /** Path to keytab for service principal. */
     private String keytabPath;
-    
+
+    /** JAAS options for client login. */
+    @NonnullAfterInit private Map<String,String> clientOptions;
+
+    /** JAAS options for server login. */
+    @NonnullAfterInit private Map<String,String> serverOptions;
+
     /** UsernamePasswordContext containing the credentials to validate. */
     @Nullable private UsernamePasswordContext upContext;
     
-    /** Result of authentication. */
-    @Nullable private Credentials krbCreds;
+    /** Constructor. */
+    public ValidateUsernamePasswordAgainstKerberos() {
+        loginModuleClassName = "com.sun.security.auth.module.Krb5LoginModule";
+    }
+    
+    /**
+     * Set the name of the JAAS LoginModule to use to acquire Kerberos credentials.
+     * 
+     * @param name  name of login module class
+     */
+    public void setLoginModuleClassName(@Nonnull final String name) {
+        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        

[... 232 lines stripped ...]


More information about the commits mailing list