aboutsummaryrefslogtreecommitdiff
path: root/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java')
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java88
1 files changed, 24 insertions, 64 deletions
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java
index 6893a794a..0b45bb461 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java
@@ -30,10 +30,10 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
-import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.advancedlogging.StatisticLogger;
+
import at.gv.egovernment.moa.id.advancedlogging.TransactionIDUtils;
+import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.MOAIDAuthInitializer;
import at.gv.egovernment.moa.id.auth.builder.AuthenticationDataBuilder;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
@@ -44,7 +44,7 @@ import at.gv.egovernment.moa.id.auth.exception.ProtocolNotActiveException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.auth.servlet.AuthServlet;
import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.IAuthData;
import at.gv.egovernment.moa.id.data.SLOInformationInterface;
@@ -54,7 +54,6 @@ import at.gv.egovernment.moa.id.moduls.IModulInfo;
import at.gv.egovernment.moa.id.moduls.IRequest;
import at.gv.egovernment.moa.id.moduls.ModulStorage;
import at.gv.egovernment.moa.id.moduls.NoPassivAuthenticationException;
-import at.gv.egovernment.moa.id.moduls.RequestImpl;
import at.gv.egovernment.moa.id.moduls.RequestStorage;
import at.gv.egovernment.moa.id.moduls.SSOManager;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.AuthnRequestValidatorException;
@@ -132,8 +131,7 @@ public class DispatcherServlet extends AuthServlet{
}
if (errorRequest != null) {
- RequestStorage.removePendingRequest(pendingRequestID);
- MOAReversionLogger.getInstance().logEvent(errorRequest, MOAIDEventConstants.TRANSACTION_ERROR);
+ RequestStorage.removePendingRequest(pendingRequestID);
try {
IModulInfo handlingModule = ModulStorage
@@ -244,13 +242,12 @@ public class DispatcherServlet extends AuthServlet{
}
}
- IRequest protocolRequest = null;
- String uniqueSessionIdentifier = null;
-
//get SSO Cookie for Request
SSOManager ssomanager = SSOManager.getInstance();
String ssoId = ssomanager.getSSOSessionID(req);
+ IRequest protocolRequest = null;
+
try {
Object idObject = req.getParameter(PARAM_TARGET_PENDINGREQUESTID);
@@ -261,10 +258,6 @@ public class DispatcherServlet extends AuthServlet{
//get IRequest if it exits
if (protocolRequest != null) {
-
- //set session and transaction IDs
- TransactionIDUtils.setTransactionId(protocolRequestID);
- TransactionIDUtils.setSessionId(protocolRequest.getSessionIdentifier());
Logger.debug(DispatcherServlet.class.getName()+": Found PendingRequest with ID " + protocolRequestID);
} else {
@@ -274,22 +267,7 @@ public class DispatcherServlet extends AuthServlet{
return;
}
} else {
- try {
- //load unique session identifier with SSO-sessionID
- uniqueSessionIdentifier = ssomanager.getUniqueSessionIdentifier(ssoId);
- if (MiscUtil.isEmpty(uniqueSessionIdentifier))
- uniqueSessionIdentifier = Random.nextRandom();
- TransactionIDUtils.setSessionId(uniqueSessionIdentifier);
-
- //set transactionID to Logger
- protocolRequestID = Random.nextRandom();
- TransactionIDUtils.setTransactionId(protocolRequestID);
-
- //log information for security and process reversion
- MOAReversionLogger.getInstance().logEvent(MOAIDEventConstants.SESSION_CREATED, uniqueSessionIdentifier);
- MOAReversionLogger.getInstance().logEvent(MOAIDEventConstants.TRANSACTION_CREATED, protocolRequestID);
- MOAReversionLogger.getInstance().logEvent(uniqueSessionIdentifier, protocolRequestID, MOAIDEventConstants.SESSION_IP, req.getRemoteAddr());
-
+ try {
protocolRequest = info.preProcess(req, resp, action);
//request is a valid interfederation response
@@ -304,7 +282,7 @@ public class DispatcherServlet extends AuthServlet{
//create interfederated MOASession
String sessionID =
AuthenticationSessionStoreage.createInterfederatedSession(protocolRequest, true, ssoId);
- req.getParameterMap().put(PARAM_SESSIONID, new String[]{ sessionID });
+ req.getParameterMap().put(MOAIDAuthConstants.PARAM_SESSIONID, new String[]{ sessionID });
Logger.info("PreProcessing of SSO interfederation response complete. ");
@@ -312,7 +290,7 @@ public class DispatcherServlet extends AuthServlet{
} else if (protocolRequest != null &&
MiscUtil.isNotEmpty(protocolRequest.getRequestID())) {
- OAAuthParameter oaParams = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(protocolRequest.getOAURL());
+ OAAuthParameter oaParams = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(protocolRequest.getOAURL());
if (oaParams.isSTORKPVPGateway() || !oaParams.isPerformLocalAuthenticationOnInterfederationError()) {
// -> send end error to service provider
Logger.info("Federated authentication for entity " + protocolRequest.getOAURL()
@@ -343,8 +321,8 @@ public class DispatcherServlet extends AuthServlet{
else
moduleAction = info.getAction(protocolRequest.requestedAction());
- protocolRequest.setRequestID(protocolRequestID);
- ((RequestImpl)protocolRequest).setSessionIdentifier(uniqueSessionIdentifier);
+ protocolRequestID = Random.nextRandom();
+ protocolRequest.setRequestID(protocolRequestID);
RequestStorage.setPendingRequest(protocolRequest);
Logger.debug(DispatcherServlet.class.getName()+": Create PendingRequest with ID " + protocolRequestID + ".");
@@ -403,7 +381,8 @@ public class DispatcherServlet extends AuthServlet{
boolean needAuthentication = moduleAction.needAuthentication(protocolRequest, req, resp);
- if (needAuthentication) {
+ if (needAuthentication) {
+
//check if interfederation IDP is requested
ssomanager.checkInterfederationIsRequested(req, resp, protocolRequest);
@@ -415,16 +394,13 @@ public class DispatcherServlet extends AuthServlet{
Logger.warn("Request sends an old SSO Session ID("+ssoId+")! " +
"Invalidate the corresponding MOASession with ID="+ correspondingMOASession);
- MOAReversionLogger.getInstance().logEvent(protocolRequest.getOnlineApplicationConfiguration(),
- protocolRequest, MOAIDEventConstants.AUTHPROCESS_SSO_INVALID);
-
AuthenticationSessionStoreage.destroySession(correspondingMOASession);
ssomanager.deleteSSOSessionID(req, resp);
}
}
//load Parameters from OnlineApplicationConfiguration
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance()
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(protocolRequest.getOAURL());
if (oaParam == null) {
@@ -448,10 +424,6 @@ public class DispatcherServlet extends AuthServlet{
boolean tryperform = authmanager.tryPerformAuthentication(
req, resp);
- if (tryperform)
- MOAReversionLogger.getInstance().logEvent(protocolRequest.getOnlineApplicationConfiguration(),
- protocolRequest, MOAIDEventConstants.AUTHPROCESS_FINISHED);
-
if (protocolRequest.forceAuth()) {
if (!tryperform) {
authmanager.doAuthentication(req, resp,
@@ -461,15 +433,12 @@ public class DispatcherServlet extends AuthServlet{
} else if (protocolRequest.isPassiv()) {
if (tryperform || (isValidSSOSession && useSSOOA && !isUseMandateRequested) ) {
// Passive authentication ok!
- // Is authenticated .. proceed
-
} else {
throw new NoPassivAuthenticationException();
}
} else {
if (tryperform || (isValidSSOSession && useSSOOA && !isUseMandateRequested) ) {
- // Is authenticated .. proceed
-
+ // Is authenticated .. proceed
} else {
// Start authentication!
authmanager.doAuthentication(req, resp,
@@ -479,12 +448,10 @@ public class DispatcherServlet extends AuthServlet{
}
if ((useSSOOA || isValidSSOSession)) //TODO: SSO with mandates requires an OVS extension
- {
- if (useSSOOA && isValidSSOSession) {
+ {
- MOAReversionLogger.getInstance().logEvent(protocolRequest.getOnlineApplicationConfiguration(),
- protocolRequest, MOAIDEventConstants.AUTHPROCESS_SSO);
-
+ if (useSSOOA && isValidSSOSession) {
+
moasessionID = ssomanager.getMOASession(ssoId);
moasession = AuthenticationSessionStoreage.getSession(moasessionID);
@@ -495,7 +462,7 @@ public class DispatcherServlet extends AuthServlet{
}
} else {
- moasessionID = (String) req.getParameter(PARAM_SESSIONID);
+ moasessionID = (String) req.getParameter(MOAIDAuthConstants.PARAM_SESSIONID);
moasession = AuthenticationSessionStoreage.getSession(moasessionID);
}
@@ -511,7 +478,7 @@ public class DispatcherServlet extends AuthServlet{
}
} else {
- moasessionID = (String) req.getParameter(PARAM_SESSIONID);
+ moasessionID = (String) req.getParameter(MOAIDAuthConstants.PARAM_SESSIONID);
moasession = AuthenticationSessionStoreage.getSession(moasessionID);
moasessionID = AuthenticationSessionStoreage.changeSessionID(moasession);
@@ -549,7 +516,6 @@ public class DispatcherServlet extends AuthServlet{
} else {
authmanager.performOnlyIDPLogOut(req, resp, moasessionID);
-
}
//Advanced statistic logging
@@ -569,10 +535,6 @@ public class DispatcherServlet extends AuthServlet{
}
- //log transaction_destroy to reversionslog
- MOAReversionLogger.getInstance().logEvent(MOAIDEventConstants.TRANSACTION_DESTROYED, protocolRequestID);
-
-
} catch (WrongParametersException ex) {
handleWrongParameters(ex, req, resp);
@@ -583,15 +545,13 @@ public class DispatcherServlet extends AuthServlet{
handleErrorNoRedirect(e.getMessage(), e, req,
resp);
}
-
+
finally {
ConfigurationDBUtils.closeSession();
- Logger.trace("Clossing Dispatcher processing loop");
-
- TransactionIDUtils.removeTransactionId();
- TransactionIDUtils.removeSessionId();
-
}
+
+ Logger.info("Clossing Dispatcher processing loop");
+ Logger.info("Http response prepared sent: " + resp.toString());
}
@Override