Author: markt Date: Fri Jul 3 20:00:56 2015 New Revision: 1689078 URL: http://svn.apache.org/r1689078 Log: JASPIC callback management moved to parent class Patch by fjodorver
Modified: tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/BasicAuthModule.java tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/DigestAuthModule.java tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/FormAuthModule.java tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/TomcatAuthModule.java Modified: tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/BasicAuthModule.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/BasicAuthModule.java?rev=1689078&r1=1689077&r2=1689078&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/BasicAuthModule.java (original) +++ tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/BasicAuthModule.java Fri Jul 3 20:00:56 2015 @@ -29,8 +29,6 @@ import javax.security.auth.message.AuthE import javax.security.auth.message.AuthStatus; import javax.security.auth.message.MessageInfo; import javax.security.auth.message.MessagePolicy; -import javax.security.auth.message.callback.CallerPrincipalCallback; -import javax.security.auth.message.callback.GroupPrincipalCallback; import javax.security.auth.message.callback.PasswordValidationCallback; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -91,14 +89,7 @@ public class BasicAuthModule extends Tom if (!passwordCallback.getResult()) { sendUnauthorizedError(response, realmName); } - - GenericPrincipal principal = getPrincipal(passwordCallback); - - CallerPrincipalCallback principalCallback = new CallerPrincipalCallback(clientSubject, - principal); - GroupPrincipalCallback groupCallback = new GroupPrincipalCallback(clientSubject, - principal.getRoles()); - handler.handle(new Callback[] { principalCallback, groupCallback }); + handlePrincipalCallbacks(clientSubject, getPrincipal(passwordCallback)); return AuthStatus.SUCCESS; } catch (Exception e) { Modified: tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/DigestAuthModule.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/DigestAuthModule.java?rev=1689078&r1=1689077&r2=1689078&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/DigestAuthModule.java (original) +++ tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/DigestAuthModule.java Fri Jul 3 20:00:56 2015 @@ -25,15 +25,12 @@ import java.util.LinkedHashMap; import java.util.Map; import javax.security.auth.Subject; -import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.UnsupportedCallbackException; import javax.security.auth.message.AuthException; import javax.security.auth.message.AuthStatus; import javax.security.auth.message.MessageInfo; import javax.security.auth.message.MessagePolicy; -import javax.security.auth.message.callback.CallerPrincipalCallback; -import javax.security.auth.message.callback.GroupPrincipalCallback; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -259,11 +256,7 @@ public class DigestAuthModule extends To } try { - CallerPrincipalCallback principalCallback = new CallerPrincipalCallback(clientSubject, - principal); - String[] roles = realm.getRoles(principal); - GroupPrincipalCallback groupCallback = new GroupPrincipalCallback(clientSubject, roles); - handler.handle(new Callback[] { principalCallback, groupCallback }); + handlePrincipalCallbacks(clientSubject, principal); } catch (IOException | UnsupportedCallbackException e) { throw new AuthException(e.getMessage()); } Modified: tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/FormAuthModule.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/FormAuthModule.java?rev=1689078&r1=1689077&r2=1689078&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/FormAuthModule.java (original) +++ tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/FormAuthModule.java Fri Jul 3 20:00:56 2015 @@ -25,15 +25,12 @@ import java.util.Locale; import java.util.Map; import javax.security.auth.Subject; -import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.UnsupportedCallbackException; import javax.security.auth.message.AuthException; import javax.security.auth.message.AuthStatus; import javax.security.auth.message.MessageInfo; import javax.security.auth.message.MessagePolicy; -import javax.security.auth.message.callback.CallerPrincipalCallback; -import javax.security.auth.message.callback.GroupPrincipalCallback; import javax.security.auth.message.callback.PasswordValidationCallback; import javax.servlet.RequestDispatcher; import javax.servlet.http.Cookie; @@ -312,16 +309,6 @@ public class FormAuthModule extends Tomc } - private void handlePrincipalCallbacks(Subject clientSubject, Principal principal) - throws IOException, UnsupportedCallbackException { - CallerPrincipalCallback principalCallback = new CallerPrincipalCallback(clientSubject, - principal); - GroupPrincipalCallback groupCallback = new GroupPrincipalCallback(clientSubject, context - .getRealm().getRoles(principal)); - handler.handle(new Callback[] { principalCallback, groupCallback }); - } - - @Override public AuthStatus secureResponse(MessageInfo messageInfo, Subject serviceSubject) throws AuthException { Modified: tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/TomcatAuthModule.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/TomcatAuthModule.java?rev=1689078&r1=1689077&r2=1689078&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/TomcatAuthModule.java (original) +++ tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/provider/modules/TomcatAuthModule.java Fri Jul 3 20:00:56 2015 @@ -16,13 +16,20 @@ */ package org.apache.catalina.authenticator.jaspic.provider.modules; +import java.io.IOException; +import java.security.Principal; import java.util.Map; import java.util.Optional; +import javax.security.auth.Subject; +import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.callback.UnsupportedCallbackException; import javax.security.auth.message.AuthException; import javax.security.auth.message.MessageInfo; import javax.security.auth.message.MessagePolicy; +import javax.security.auth.message.callback.CallerPrincipalCallback; +import javax.security.auth.message.callback.GroupPrincipalCallback; import javax.security.auth.message.module.ServerAuthModule; import org.apache.catalina.Context; @@ -94,4 +101,22 @@ public abstract class TomcatAuthModule i public abstract void initializeModule(MessagePolicy requestPolicy, MessagePolicy responsePolicy, CallbackHandler handler, Map options) throws AuthException; + + + /** + * Convert Tomcat's principal to JAAS subject using JASPIC callbacks + * + * @param clientSubject + * @param principal + * @throws IOException + * @throws UnsupportedCallbackException + */ + protected void handlePrincipalCallbacks(Subject clientSubject, Principal principal) + throws IOException, UnsupportedCallbackException { + CallerPrincipalCallback principalCallback = new CallerPrincipalCallback(clientSubject, + principal); + String[] roles = context.getRealm().getRoles(principal); + GroupPrincipalCallback groupCallback = new GroupPrincipalCallback(clientSubject, roles); + handler.handle(new Callback[] { principalCallback, groupCallback }); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org