Skip to content

Commit

Permalink
Improve console and myaccount skip logic for diagnostic logs
Browse files Browse the repository at this point in the history
  • Loading branch information
sadilchamishka committed May 13, 2024
1 parent 8a2f649 commit 8d3c7b0
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -734,6 +734,7 @@ protected AuthenticationContext initializeFlow(HttpServletRequest request, HttpS
FrameworkConstants.LogConstants.AUTHENTICATION_FRAMEWORK,
FrameworkConstants.LogConstants.ActionIDs.INIT_AUTH_FLOW)
.inputParam(LogConstants.InputKeys.APPLICATION_NAME, context.getServiceProviderName())
.inputParam(LogConstants.InputKeys.CLIENT_ID, relyingParty)
.inputParam(LogConstants.InputKeys.CALLER_PATH, callerPath)
.inputParam(FrameworkConstants.LogConstants.TENANT_DOMAIN, tenantDomain)
.inputParam(FrameworkConstants.SESSION_DATA_KEY, callerSessionDataKey)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -722,6 +722,7 @@ protected void doAuthentication(HttpServletRequest request, HttpServletResponse
diagnosticLogBuilder.inputParam(LogConstants.InputKeys.IDP, idpName)
.inputParam("selected authenticator", authenticator.getName())
.inputParam(LogConstants.InputKeys.STEP, currentStep)
.inputParam(LogConstants.InputKeys.CLIENT_ID, context.getRelyingParty())
.resultMessage("Executing the authentication step.")
.resultStatus(DiagnosticLog.ResultStatus.SUCCESS)
.logDetailLevel(DiagnosticLog.LogDetailLevel.APPLICATION);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ public static class ApplicationManagement {
public static final String UPDATE_APP_STATE_ACTION = "update-app-state";
public static final String CONSOLE_CLIENT_ID = "CONSOLE";
public static final String MY_ACCOUNT_CLIENT_ID = "MY_ACCOUNT";
public static final String CONSOLE_APP_NAME = "Console";
public static final String MY_ACCOUNT_APP_NAME = "My Account";
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
Expand Down Expand Up @@ -50,8 +51,7 @@
import java.util.Map;
import java.util.UUID;

import static org.wso2.carbon.identity.central.log.mgt.utils.LogConstants.ApplicationManagement.CONSOLE_CLIENT_ID;
import static org.wso2.carbon.identity.central.log.mgt.utils.LogConstants.ApplicationManagement.MY_ACCOUNT_CLIENT_ID;
import static org.wso2.carbon.identity.central.log.mgt.utils.LogConstants.ApplicationManagement.*;
import static org.wso2.carbon.identity.central.log.mgt.utils.LogConstants.ENABLE_LOG_MASKING;
import static org.wso2.carbon.identity.central.log.mgt.utils.LogConstants.LOGGABLE_USER_CLAIMS;
import static org.wso2.carbon.identity.event.IdentityEventConstants.Event.PUBLISH_AUDIT_LOG;
Expand Down Expand Up @@ -172,14 +172,8 @@ public static void triggerDiagnosticLogEvent(DiagnosticLog.DiagnosticLogBuilder
DiagnosticLog diagnosticLog = diagnosticLogBuilder.build();
/* As the Console and MyAccount application are managed by the identity server, the diagnostic logs are not
required to be emitted. */
if (diagnosticLog.getInput() != null) {
String clientID = (String) diagnosticLog.getInput().get(LogConstants.InputKeys.CLIENT_ID);
if (clientID == null) {
clientID = (String) diagnosticLog.getInput().get("client_id");
}
if (CONSOLE_CLIENT_ID.equals(clientID) || MY_ACCOUNT_CLIENT_ID.equals(clientID)) {
return;
}
if (isConsoleOrMyAccountApp(diagnosticLog)) {
return;
}
IdentityEventService eventMgtService =
CentralLogMgtServiceComponentHolder.getInstance().getIdentityEventService();
Expand Down Expand Up @@ -394,4 +388,36 @@ public static List<String> getLoggableClaimURIs() {
}
return new ArrayList<>();
}

private static boolean isConsoleOrMyAccountApp(DiagnosticLog diagnosticLog) {

if (diagnosticLog.getInput() == null) {
return false;
}
String clientID;
List<?> clientIDs;
Object clientIDInputObj = diagnosticLog.getInput().get(LogConstants.InputKeys.CLIENT_ID);
if (clientIDInputObj instanceof String) {
return CONSOLE_CLIENT_ID.equals(clientIDInputObj) || MY_ACCOUNT_CLIENT_ID.equals(clientIDInputObj);
}
Object clientNameInputObj = diagnosticLog.getInput().get(LogConstants.InputKeys.APPLICATION_NAME);
if (clientNameInputObj instanceof String) {
return CONSOLE_APP_NAME.equals(clientNameInputObj) || MY_ACCOUNT_APP_NAME.equals(clientNameInputObj);
}
if (clientIDInputObj instanceof List<?>) {
clientIDs = (List<?>) diagnosticLog.getInput().get(LogConstants.InputKeys.CLIENT_ID);
if (CollectionUtils.isNotEmpty(clientIDs)) {
clientID = (String) clientIDs.get(0);
return CONSOLE_CLIENT_ID.equals(clientID) || MY_ACCOUNT_CLIENT_ID.equals(clientID);
}
}
if (diagnosticLog.getInput().get("client_id") instanceof List<?>) {
clientIDs = (List<?>) diagnosticLog.getInput().get("client_id");
if (CollectionUtils.isNotEmpty(clientIDs)) {
clientID = (String) clientIDs.get(0);
return CONSOLE_CLIENT_ID.equals(clientID) || MY_ACCOUNT_CLIENT_ID.equals(clientID);
}
}
return false;
}
}

0 comments on commit 8d3c7b0

Please sign in to comment.