diff --git a/src/main/java/com/eactive/eai/rms/onl/apim/approval/app/PortalAppApprovalListener.java b/src/main/java/com/eactive/eai/rms/onl/apim/approval/app/PortalAppApprovalListener.java index 63b1952..ed7706b 100644 --- a/src/main/java/com/eactive/eai/rms/onl/apim/approval/app/PortalAppApprovalListener.java +++ b/src/main/java/com/eactive/eai/rms/onl/apim/approval/app/PortalAppApprovalListener.java @@ -63,7 +63,6 @@ public class PortalAppApprovalListener implements ApprovalListener { @Autowired private AgentUtilService agentUtilService; - private final PortalPropertyService portalPropertyService; private final ApiGroupService apiGroupService; private final AppRequestRepository appRequestRepository; private final CredentialManService credentialManService; @@ -71,30 +70,6 @@ public class PortalAppApprovalListener implements ApprovalListener { private final ClientManService clientManService; private final MessageSendService messageSendService; - public static RestTemplate createRestTemplateWithTimeout(int connectTimeout) { - - RequestConfig requestConfig = RequestConfig.custom() - .setConnectionRequestTimeout(connectTimeout) - .setConnectTimeout(connectTimeout) - .setSocketTimeout(connectTimeout) - .build(); - - HttpClient httpClient = - HttpClientBuilder.create() - .setMaxConnTotal(50) - .setMaxConnPerRoute(20) - .setDefaultRequestConfig(requestConfig) - .build(); - - HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); - factory.setHttpClient(httpClient); - - RestTemplate restTemplate = new RestTemplate(); - restTemplate.setRequestFactory(factory); - - return restTemplate; - } - @Override public void execute(Approval approval, Map option1) throws ApprovalDeployException { @@ -103,20 +78,11 @@ public class PortalAppApprovalListener implements ApprovalListener { AppRequest appRequest = optRequest.orElseGet(null); if (appRequest != null) { AppRequestType type = appRequest.getType(); - String server = determineServer(type); CredentialUI credentialUI = null; - if (appRequest.getType().equals(AppRequestType.PROD_NEW)) { - credentialUI = createAndSaveCredentialUI("prod", optRequest.get()); - } else if (appRequest.getType().equals(AppRequestType.PROD_MODIFY)) { - credentialUI = modifyClientUI(optRequest.get()); - } else if (appRequest.getType().equals(AppRequestType.PROD_DELETE)) { - credentialManService.delete(optRequest.get().getClientId()); - credentialUI = new CredentialUI(); - credentialUI.setClientid(optRequest.get().getClientId()); - } else if (appRequest.getType().equals(AppRequestType.NEW)) { - credentialUI = createAndSaveCredentialUI("stg", optRequest.get()); + if (appRequest.getType().equals(AppRequestType.NEW)) { + credentialUI = createAndSaveCredentialUI(optRequest.get()); } else if (appRequest.getType().equals(AppRequestType.MODIFY)) { credentialUI = modifyClientUI(optRequest.get()); } else if (appRequest.getType().equals(AppRequestType.DELETE)) { @@ -124,7 +90,7 @@ public class PortalAppApprovalListener implements ApprovalListener { credentialUI = new CredentialUI(); credentialUI.setClientid(optRequest.get().getClientId()); } - syncTargetServer(server, determineAction(type), credentialUI); + syncTargetServer(type, credentialUI); sendApprovalResult(appRequest); } } @@ -138,81 +104,27 @@ public class PortalAppApprovalListener implements ApprovalListener { messageSendService.sendMessage("APP_REGISTER_APPROVED", recipient, params); } - private String determineAction(AppRequestType type) { - if (type == AppRequestType.PROD_NEW || type == AppRequestType.NEW) { - return "insert"; - } else if (type == AppRequestType.PROD_MODIFY || type == AppRequestType.MODIFY) { - return "update"; - } else if (type == AppRequestType.PROD_DELETE || type == AppRequestType.DELETE) { - return "delete"; - } else { - return "none"; + private void syncTargetServer(AppRequestType action, CredentialUI credentialUI) throws ApprovalDeployException { + + DataSourceType type = DataSourceTypeManager.getDataSourceType("APIGW"); + DataSourceContextHolder.setDataSourceType(type); + + if (action.equals(AppRequestType.NEW)) { + clientManService.insert(credentialUIMapper.mapClient(credentialUI)); + } else if (action.equals(AppRequestType.MODIFY)) { + clientManService.update(credentialUIMapper.mapClient(credentialUI)); + } else if (action.equals(AppRequestType.DELETE)) { + clientManService.delete(credentialUI.getClientid()); } - } - private String determineServer(AppRequestType type) { - if (type == AppRequestType.NEW || type == AppRequestType.MODIFY || type == AppRequestType.DELETE) { - return "stg"; - } else { - return "prod"; - } - } + //TODO: commit 처리 - private void syncTargetServer(String server, String action, CredentialUI credentialUI) throws ApprovalDeployException { - // 프록시를 통한 스테이징 서버 호출 추가 - Map properties = portalPropertyService.getPortalPropertiesAsMap(PORTAL_PROPERTY_GROUP); - String prodUseProxy = properties.getOrDefault("deploy.prod_use_proxy", "N"); + CommonCommand.builder() + .name(CommonCommand.RELOAD_CLIENT_COMMAND) + .args(credentialUI.getClientid()) + .build().broadcast(agentUtilService); - if (server.equalsIgnoreCase("prod") && prodUseProxy.equalsIgnoreCase("N")) { - - if (action.equalsIgnoreCase("insert")) { - clientManService.insert(credentialUIMapper.mapClient(credentialUI)); - } else if (action.equalsIgnoreCase("update")) { - clientManService.update(credentialUIMapper.mapClient(credentialUI)); - } else if (action.equalsIgnoreCase("delete")) { - clientManService.delete(credentialUI.getClientid()); - } - - DataSourceType type = DataSourceTypeManager.getDataSourceType("APIGW"); - DataSourceContextHolder.setDataSourceType(type); - CommonCommand.builder() - .name(CommonCommand.RELOAD_CLIENT_COMMAND) - .args(credentialUI.getClientid()) - .build().broadcast(agentUtilService); - - } else { - String apiKey = properties.get("apiKey"); - String proxyUrl = properties.get("portal.url"); - String timeout = properties.getOrDefault("deploy.proxy_timeout", "10000"); - String proxyEndpoint = proxyUrl + "/_onl/admin/authserver/clientMan.json?serviceType=APIGW"; - - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - headers.set("X-API-KEY", apiKey); - headers.set("target_host", server); - headers.set("action", action); - - HttpEntity request = new HttpEntity<>(credentialUIMapper.mapClient(credentialUI), headers); - - try { - ResponseEntity response = createRestTemplateWithTimeout(Integer.parseInt(timeout)).exchange( - proxyEndpoint, - HttpMethod.POST, - request, - String.class - ); - - if (!response.getStatusCode().is2xxSuccessful()) { - logger.error("Failed to sync with {} server. Status: {}, Body: {}", server, response.getStatusCode(), response.getBody()); - throw new ApprovalDeployException("API키 배포에 실패 했습니다."); - } - } catch (Exception e) { - logger.error("Failed to sync with {} server. {}", server, e.getMessage()); - throw new ApprovalDeployException("API키 배포에 실패 했습니다."); - } - - } } @@ -231,9 +143,8 @@ public class PortalAppApprovalListener implements ApprovalListener { return existingCredential; } - private CredentialUI createAndSaveCredentialUI(String server, AppRequest appRequest) { + private CredentialUI createAndSaveCredentialUI(AppRequest appRequest) { CredentialUI credentialUI = new CredentialUI(); - credentialUI.setServer(server); credentialUI.setClientid(RandomStringGenerator.generateString(32)); credentialUI.setClientsecret(RandomStringGenerator.generateString(128)); credentialUI.setClientname(appRequest.getClientName()); @@ -241,6 +152,9 @@ public class PortalAppApprovalListener implements ApprovalListener { credentialUI.setGranttypes("client_credentials"); credentialUI.setOrgid(appRequest.getOrg().getId()); credentialUI.setOrgname(appRequest.getOrg().getOrgName()); + credentialUI.setAllowedips(appRequest.getIpWhitelist()); + credentialUI.setRedirecturi(appRequest.getCallbackUrl()); + credentialUI.setAppIconFileId(appRequest.getAppIconFileId()); credentialUI.setAccesstokenvalidityseconds("86400"); Set apiIds = processApiGroups(appRequest); diff --git a/src/main/java/com/eactive/eai/rms/onl/apim/approval/credential/CredentialUI.java b/src/main/java/com/eactive/eai/rms/onl/apim/approval/credential/CredentialUI.java index bb9e438..248e3b1 100644 --- a/src/main/java/com/eactive/eai/rms/onl/apim/approval/credential/CredentialUI.java +++ b/src/main/java/com/eactive/eai/rms/onl/apim/approval/credential/CredentialUI.java @@ -53,4 +53,6 @@ public class CredentialUI implements Serializable, com.eactive.eai.data.Data { private int dailytokenlimit; private List apiList = new ArrayList<>(); + + private String appIconFileId; } diff --git a/src/main/java/com/eactive/eai/rms/onl/manage/authserver/client/ClientController.java b/src/main/java/com/eactive/eai/rms/onl/manage/authserver/client/ClientController.java index e2da470..c8f1425 100644 --- a/src/main/java/com/eactive/eai/rms/onl/manage/authserver/client/ClientController.java +++ b/src/main/java/com/eactive/eai/rms/onl/manage/authserver/client/ClientController.java @@ -101,26 +101,6 @@ public class ClientController extends OnlBaseAnnotationController { return ResponseEntity.ok().build(); } - @PostMapping(value = "/_onl/admin/authserver/clientMan.json", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity apiRequest(@RequestHeader(value = "action", required = false, defaultValue = "none") String action, - @RequestBody ClientUI clientUI) { - - if (action.equalsIgnoreCase("insert")) { - clientManService.insert(clientUI); - } else if (action.equalsIgnoreCase("update")) { - clientManService.update(clientUI); - } else if (action.equalsIgnoreCase("delete")) { - clientManService.delete(clientUI.getClientId()); - } - - CommonCommand.builder() - .name(CommonCommand.RELOAD_CLIENT_COMMAND) - .args(clientUI.getClientId()) - .build().broadcast(agentUtilService); - - return ResponseEntity.ok().build(); - } - @PostMapping(value = "/onl/admin/authserver/clientMan.json", params = "cmd=DELETE") public ResponseEntity delete(String clientId) { clientManService.delete(clientId);