Author: markt Date: Thu Aug 4 16:36:41 2016 New Revision: 1755204 URL: http://svn.apache.org/viewvc?rev=1755204&view=rev Log: Delay JASPIC init
Modified: tomcat/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java Modified: tomcat/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java?rev=1755204&r1=1755203&r2=1755204&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java (original) +++ tomcat/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java Thu Aug 4 16:36:41 2016 @@ -428,10 +428,6 @@ public abstract class AuthenticatorBase request.getRequestURI()); } - AuthConfigProvider jaspicProvider = getJaspicProvider(); - MessageInfo messageInfo = null; - ServerAuthContext serverAuthContext = null; - // Have we got a cached authenticated Principal to record? if (cache) { Principal principal = request.getUserPrincipal(); @@ -451,20 +447,6 @@ public abstract class AuthenticatorBase } } - if (jaspicProvider != null) { - messageInfo = new MessageInfoImpl(request.getRequest(), response.getResponse(), true); - try { - ServerAuthConfig serverAuthConfig = jaspicProvider.getServerAuthConfig( - "HttpServlet", jaspicAppContextID, CallbackHandlerImpl.getInstance()); - String authContextID = serverAuthConfig.getAuthContextID(messageInfo); - serverAuthContext = serverAuthConfig.getAuthContext(authContextID, null, null); - } catch (AuthException e) { - log.warn(sm.getString("authenticator.jaspicServerAuthContextFail"), e); - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - return; - } - } - boolean authRequired = isContinuationRequired(request); // The Servlet may specify security constraints through annotations. @@ -478,8 +460,12 @@ public abstract class AuthenticatorBase // Is this request URI subject to a security constraint? SecurityConstraint[] constraints = realm.findSecurityConstraints(request, this.context); - if (constraints == null && !context.getPreemptiveAuthentication() && - jaspicProvider == null && !authRequired) { + AuthConfigProvider jaspicProvider = getJaspicProvider(); + if (jaspicProvider != null) { + authRequired = true; + } + + if (constraints == null && !context.getPreemptiveAuthentication() && !authRequired) { if (log.isDebugEnabled()) { log.debug(" Not subject to any constraint"); } @@ -548,14 +534,28 @@ public abstract class AuthenticatorBase authRequired = certs != null && certs.length > 0; } - if (!authRequired && jaspicProvider != null) { - authRequired = true; - } + MessageInfo messageInfo = null; + ServerAuthContext serverAuthContext = null; if (authRequired) { if (log.isDebugEnabled()) { log.debug(" Calling authenticate()"); } + + if (jaspicProvider != null) { + messageInfo = new MessageInfoImpl(request.getRequest(), response.getResponse(), true); + try { + ServerAuthConfig serverAuthConfig = jaspicProvider.getServerAuthConfig( + "HttpServlet", jaspicAppContextID, CallbackHandlerImpl.getInstance()); + String authContextID = serverAuthConfig.getAuthContextID(messageInfo); + serverAuthContext = serverAuthConfig.getAuthContext(authContextID, null, null); + } catch (AuthException e) { + log.warn(sm.getString("authenticator.jaspicServerAuthContextFail"), e); + response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + return; + } + } + if (!authenticate(request, response, serverAuthContext, messageInfo)) { if (log.isDebugEnabled()) { log.debug(" Failed authenticate() test"); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org