Skip to content

Commit

Permalink
Merge pull request #130 from JanssenProject/issue#129
Browse files Browse the repository at this point in the history
feat: Plugin logs management in config api using  Composite Configuration
  • Loading branch information
yuriyz committed Dec 27, 2021
2 parents dd51841 + 24ab3be commit 4056cf5
Show file tree
Hide file tree
Showing 26 changed files with 218 additions and 193 deletions.
38 changes: 38 additions & 0 deletions plugins/admin-ui-plugin/config/log4j2-adminui.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>

<Configuration packages="io.jans.log">
<Appenders>

<RollingFile name="ADMINUI-AUDIT" fileName="${sys:log.base}/logs/adminuiAudit.log" filePattern="${sys:log.base}/logs/adminuiAudit-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="%d{dd-MM HH:mm:ss.SSS} %-5p [%t] [%C{6}] (%F:%L) - %m%n" />

<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
<SizeBasedTriggeringPolicy size="250 MB" />
</Policies>

<DefaultRolloverStrategy max="15" />
</RollingFile>
<RollingFile name="ADMINUI-LOG" fileName="${sys:log.base}/logs/adminui.log" filePattern="${sys:log.base}/logs/adminui-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="%d{dd-MM HH:mm:ss.SSS} %-5p [%t] [%C{6}] (%F:%L) - %m%n" />

<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
<SizeBasedTriggeringPolicy size="250 MB" />
</Policies>

<DefaultRolloverStrategy max="15" />
</RollingFile>

</Appenders>

<Loggers>
<Logger name="io.jans.ca.plugin.adminui.rest.logging" level="${log4j.default.log.level}" additivity="false">
<AppenderRef ref="ADMINUI-AUDIT" />
</Logger>
<Logger name="io.jans.ca.plugin.adminui" level="${log4j.default.log.level}" additivity="false">
<AppenderRef ref="ADMINUI-LOG" />
</Logger>
</Loggers>

</Configuration>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.jans.configapi.plugin.adminui.extensions;
package io.jans.ca.plugin.adminui.extensions;

import javax.enterprise.inject.spi.Extension;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.jans.configapi.plugin.adminui.model.auth;
package io.jans.ca.plugin.adminui.model.auth;

import com.fasterxml.jackson.annotation.JsonProperty;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.jans.configapi.plugin.adminui.model.auth;
package io.jans.ca.plugin.adminui.model.auth;

public class LicenseRequest {
private String licenseKey;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.jans.configapi.plugin.adminui.model.auth;
package io.jans.ca.plugin.adminui.model.auth;

public class LicenseResponse {
private boolean isLicenseEnable;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.jans.configapi.plugin.adminui.model.auth;
package io.jans.ca.plugin.adminui.model.auth;

public class OAuth2ConfigResponse {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.jans.configapi.plugin.adminui.model.auth;
package io.jans.ca.plugin.adminui.model.auth;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.jans.configapi.plugin.adminui.model.auth;
package io.jans.ca.plugin.adminui.model.auth;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.jans.configapi.plugin.adminui.model.auth;
package io.jans.ca.plugin.adminui.model.auth;

import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.jans.configapi.plugin.adminui.model.config;
package io.jans.ca.plugin.adminui.model.config;

public class AUIConfiguration {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.jans.configapi.plugin.adminui.model.config;
package io.jans.ca.plugin.adminui.model.config;

import com.licensespring.LicenseManager;
import com.licensespring.LicenseSpringConfiguration;
Expand Down Expand Up @@ -29,7 +29,7 @@ public LicenseConfiguration(String apiKey, String productCode, String sharedKey,
this.enabled = enabled;
this.managementKey = managementKey;

if(this.enabled) {
if(Boolean.TRUE.equals(this.enabled)) {
initializeLicenseManager();
}
}
Expand All @@ -47,7 +47,7 @@ public void initializeLicenseManager() {
licenseManager.initialize(licenseSpringConfiguration);
}
} catch (LicenseSpringException e) {
log.error("Error in initializing LicenseManager. ", e);
log.error("Error in initializing LicenseManager. ");
throw e;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package io.jans.configapi.plugin.adminui.model.exception;
package io.jans.ca.plugin.adminui.model.exception;

public class ApplicationException extends Exception {
private int errorCode;
private String message;
private final int errorCode;
private final String message;

public ApplicationException(int errorCode, String message) {
super("Error Code: " + errorCode + ", Description: " + message);
Expand All @@ -14,16 +14,8 @@ public int getErrorCode() {
return errorCode;
}

public void setErrorCode(int errorCode) {
this.errorCode = errorCode;
}

@Override
public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
* Copyright (c) 2020, Janssen Project
*/

package io.jans.configapi.plugin.adminui.rest;
package io.jans.ca.plugin.adminui.rest;

import io.jans.configapi.plugin.adminui.rest.auth.OAuth2Resource;
import io.jans.configapi.plugin.adminui.rest.license.LicenseResource;
import io.jans.configapi.plugin.adminui.rest.logging.AuditLoggerResource;
import io.jans.configapi.plugin.adminui.rest.user.UserManagementResource;
import io.jans.ca.plugin.adminui.rest.auth.OAuth2Resource;
import io.jans.ca.plugin.adminui.rest.user.UserManagementResource;
import io.jans.ca.plugin.adminui.rest.license.LicenseResource;
import io.jans.ca.plugin.adminui.rest.logging.AuditLoggerResource;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
Expand All @@ -25,7 +25,7 @@ public class ApiApplication extends Application {

@Override
public Set<Class<?>> getClasses() {
HashSet<Class<?>> classes = new HashSet<Class<?>>();
HashSet<Class<?>> classes = new HashSet<>();

// General
classes.add(OAuth2Resource.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package io.jans.configapi.plugin.adminui.rest.auth;

import io.jans.configapi.plugin.adminui.model.auth.OAuth2ConfigResponse;
import io.jans.configapi.plugin.adminui.model.auth.TokenResponse;
import io.jans.configapi.plugin.adminui.model.auth.UserInfoRequest;
import io.jans.configapi.plugin.adminui.model.auth.UserInfoResponse;
import io.jans.configapi.plugin.adminui.model.config.AUIConfiguration;
import io.jans.configapi.plugin.adminui.model.exception.ApplicationException;
import io.jans.configapi.plugin.adminui.service.auth.OAuth2Service;
import io.jans.configapi.plugin.adminui.service.config.AUIConfigurationService;
import io.jans.configapi.plugin.adminui.utils.ErrorResponse;
package io.jans.ca.plugin.adminui.rest.auth;

import io.jans.ca.plugin.adminui.model.auth.OAuth2ConfigResponse;
import io.jans.ca.plugin.adminui.model.auth.TokenResponse;
import io.jans.ca.plugin.adminui.model.auth.UserInfoRequest;
import io.jans.ca.plugin.adminui.model.auth.UserInfoResponse;
import io.jans.ca.plugin.adminui.model.config.AUIConfiguration;
import io.jans.ca.plugin.adminui.model.exception.ApplicationException;
import io.jans.ca.plugin.adminui.service.auth.OAuth2Service;
import io.jans.ca.plugin.adminui.service.config.AUIConfigurationService;
import io.jans.ca.plugin.adminui.utils.ErrorResponse;
import org.slf4j.Logger;

import javax.inject.Inject;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package io.jans.configapi.plugin.adminui.rest.license;
package io.jans.ca.plugin.adminui.rest.license;

import io.jans.configapi.plugin.adminui.model.auth.LicenseRequest;
import io.jans.configapi.plugin.adminui.model.auth.LicenseResponse;
import io.jans.configapi.plugin.adminui.model.exception.ApplicationException;
import io.jans.configapi.plugin.adminui.service.license.LicenseDetailsService;
import io.jans.configapi.plugin.adminui.utils.ErrorResponse;
import io.jans.ca.plugin.adminui.model.exception.ApplicationException;
import io.jans.ca.plugin.adminui.model.auth.LicenseRequest;
import io.jans.ca.plugin.adminui.model.auth.LicenseResponse;
import io.jans.ca.plugin.adminui.service.license.LicenseDetailsService;
import io.jans.ca.plugin.adminui.utils.ErrorResponse;
import org.slf4j.Logger;

import javax.inject.Inject;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.jans.configapi.plugin.adminui.rest.logging;
package io.jans.ca.plugin.adminui.rest.logging;

import io.jans.configapi.plugin.adminui.utils.ErrorResponse;
import io.jans.ca.plugin.adminui.utils.ErrorResponse;
import org.slf4j.Logger;

import javax.inject.Inject;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package io.jans.configapi.plugin.adminui.rest.user;
package io.jans.ca.plugin.adminui.rest.user;

import io.jans.as.model.config.adminui.AdminPermission;
import io.jans.as.model.config.adminui.AdminRole;
import io.jans.as.model.config.adminui.RolePermissionMapping;
import io.jans.configapi.filters.ProtectedApi;
import io.jans.configapi.plugin.adminui.model.exception.ApplicationException;
import io.jans.configapi.plugin.adminui.service.user.UserManagementService;
import io.jans.configapi.plugin.adminui.utils.ErrorResponse;
import io.jans.ca.plugin.adminui.model.exception.ApplicationException;
import io.jans.ca.plugin.adminui.service.user.UserManagementService;
import io.jans.ca.plugin.adminui.utils.ErrorResponse;
import org.slf4j.Logger;

import javax.inject.Inject;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package io.jans.configapi.plugin.adminui.service.auth;
package io.jans.ca.plugin.adminui.service.auth;

import com.google.common.base.Strings;
import com.google.common.collect.Maps;
import io.jans.as.client.TokenRequest;
import io.jans.as.model.common.GrantType;
import io.jans.as.model.jwt.Jwt;
import io.jans.as.model.jwt.JwtClaims;
import io.jans.configapi.plugin.adminui.model.auth.TokenResponse;
import io.jans.configapi.plugin.adminui.model.auth.UserInfoRequest;
import io.jans.configapi.plugin.adminui.model.auth.UserInfoResponse;
import io.jans.configapi.plugin.adminui.model.config.AUIConfiguration;
import io.jans.configapi.plugin.adminui.model.exception.ApplicationException;
import io.jans.configapi.plugin.adminui.service.config.AUIConfigurationService;
import io.jans.configapi.plugin.adminui.utils.ErrorResponse;
import io.jans.ca.plugin.adminui.model.config.AUIConfiguration;
import io.jans.ca.plugin.adminui.model.exception.ApplicationException;
import io.jans.ca.plugin.adminui.model.auth.TokenResponse;
import io.jans.ca.plugin.adminui.model.auth.UserInfoRequest;
import io.jans.ca.plugin.adminui.model.auth.UserInfoResponse;
import io.jans.ca.plugin.adminui.service.config.AUIConfigurationService;
import io.jans.ca.plugin.adminui.utils.ErrorResponse;
import org.jboss.resteasy.client.jaxrs.ResteasyClient;
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
Expand All @@ -29,7 +29,6 @@
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import java.net.URI;
import java.util.List;
import java.util.Map;
import java.util.Set;
Expand All @@ -47,7 +46,7 @@ public class OAuth2Service {
*/
public TokenResponse getAccessToken(String code) throws ApplicationException {
try {
log.debug("Getting access token with code: {}", code);
log.debug("Getting access token with code");
if (Strings.isNullOrEmpty(code)) {
log.error(ErrorResponse.AUTHORIZATION_CODE_BLANK.getDescription());
throw new ApplicationException(Response.Status.BAD_REQUEST.getStatusCode(), ErrorResponse.AUTHORIZATION_CODE_BLANK.getDescription());
Expand All @@ -71,7 +70,7 @@ public TokenResponse getAccessToken(String code) throws ApplicationException {

return tokenResp;
} catch (ApplicationException e) {
log.error(ErrorResponse.GET_ACCESS_TOKEN_ERROR.getDescription(), e);
log.error(ErrorResponse.GET_ACCESS_TOKEN_ERROR.getDescription());
throw e;
} catch (Exception e) {
log.error(ErrorResponse.GET_ACCESS_TOKEN_ERROR.getDescription(), e);
Expand All @@ -84,7 +83,7 @@ public TokenResponse getAccessToken(String code) throws ApplicationException {
*/
public TokenResponse getApiProtectionToken(String userInfoJwt) throws ApplicationException {
try {
log.debug("Getting api-protection token with userInfoJwt: {}", userInfoJwt);
log.debug("Getting api-protection token with userInfoJwt");
if (Strings.isNullOrEmpty(userInfoJwt)) {
log.error(ErrorResponse.USER_INFO_JWT_BLANK.getDescription());
throw new ApplicationException(Response.Status.BAD_REQUEST.getStatusCode(), ErrorResponse.USER_INFO_JWT_BLANK.getDescription());
Expand All @@ -105,9 +104,9 @@ public TokenResponse getApiProtectionToken(String userInfoJwt) throws Applicatio
tokenResp.setAccessToken(tokenResponse.getAccessToken());
tokenResp.setIdToken(tokenResponse.getIdToken());
tokenResp.setRefreshToken(tokenResponse.getRefreshToken());

if (claims.get("scope") != null && claims.get("scope") instanceof List) {
tokenResp.setScopes((List) claims.get("scope"));
final String SCOPE = "scope";
if (claims.get(SCOPE) instanceof List) {
tokenResp.setScopes((List) claims.get(SCOPE));
}

if (claims.get("iat") != null) {
Expand All @@ -125,7 +124,7 @@ public TokenResponse getApiProtectionToken(String userInfoJwt) throws Applicatio
return tokenResp;

} catch (ApplicationException e) {
log.error(ErrorResponse.GET_API_PROTECTION_TOKEN_ERROR.getDescription(), e);
log.error(ErrorResponse.GET_API_PROTECTION_TOKEN_ERROR.getDescription());
throw e;
} catch (Exception e) {
log.error(ErrorResponse.GET_API_PROTECTION_TOKEN_ERROR.getDescription(), e);
Expand All @@ -139,8 +138,6 @@ public UserInfoResponse getUserInfo(UserInfoRequest userInfoRequest) throws Appl
log.debug("Getting User-Info from auth-server: {}", userInfoRequest.getAccessToken());
AUIConfiguration auiConfiguration = auiConfigurationService.getAUIConfiguration();

final URI userInfoUri = new URI(auiConfiguration.getAuthServerUserInfoEndpoint());

String accessToken = org.apache.logging.log4j.util.Strings.isNotBlank(userInfoRequest.getAccessToken()) ? userInfoRequest.getAccessToken() : null;

if (Strings.isNullOrEmpty(userInfoRequest.getCode()) && Strings.isNullOrEmpty(accessToken)) {
Expand Down Expand Up @@ -182,7 +179,7 @@ public UserInfoResponse getUserInfo(UserInfoRequest userInfoRequest) throws Appl
}

} catch (ApplicationException e) {
log.error(ErrorResponse.GET_USER_INFO_ERROR.getDescription(), e);
log.error(ErrorResponse.GET_USER_INFO_ERROR.getDescription());
throw e;
} catch (Exception e) {
log.error(ErrorResponse.GET_USER_INFO_ERROR.getDescription(), e);
Expand Down Expand Up @@ -244,25 +241,23 @@ public io.jans.as.client.TokenResponse getToken(TokenRequest tokenRequest, Strin
}

} catch (Exception e) {
log.error("Problems processing token call", e);
log.error("Problems processing token call");
throw e;

} finally {
if (engine != null) {
engine.close();
}
}
return null;
}

private Map<String, Object> getClaims(Jwt jwtObj) {
Map<String, Object> claims = Maps.newHashMap();
if (jwtObj == null) {
return null;
return claims;
}
JwtClaims jwtClaims = jwtObj.getClaims();
Map<String, Object> claims = Maps.newHashMap();
Set<String> keys = jwtClaims.keys();
keys.forEach((key) -> {
keys.forEach(key -> {

if (jwtClaims.getClaim(key) instanceof String)
claims.put(key, jwtClaims.getClaim(key).toString());
Expand All @@ -277,7 +272,7 @@ else if (jwtClaims.getClaim(key) instanceof JSONArray) {
List<String> sourceArr = jwtClaims.getClaimAsStringList(key);
claims.put(key, sourceArr);
} else if (jwtClaims.getClaim(key) instanceof JSONObject)
claims.put(key, ((JSONObject) jwtClaims.getClaim(key)));
claims.put(key, (jwtClaims.getClaim(key)));
});
return claims;
}
Expand Down
Loading

0 comments on commit 4056cf5

Please sign in to comment.