diff options
Diffstat (limited to 'src/main/java/com/att/nsa/cambria/service/impl/ApiKeysServiceImpl.java')
-rw-r--r-- | src/main/java/com/att/nsa/cambria/service/impl/ApiKeysServiceImpl.java | 326 |
1 files changed, 0 insertions, 326 deletions
diff --git a/src/main/java/com/att/nsa/cambria/service/impl/ApiKeysServiceImpl.java b/src/main/java/com/att/nsa/cambria/service/impl/ApiKeysServiceImpl.java deleted file mode 100644 index 637d2fb..0000000 --- a/src/main/java/com/att/nsa/cambria/service/impl/ApiKeysServiceImpl.java +++ /dev/null @@ -1,326 +0,0 @@ -/******************************************************************************* - * ============LICENSE_START======================================================= - * org.onap.dmaap - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * - *******************************************************************************/ -package com.att.nsa.cambria.service.impl; - -import java.io.IOException; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import org.json.JSONArray; -import org.json.JSONObject; -import org.springframework.stereotype.Service; - -//import com.att.nsa.apiServer.util.Emailer; -import com.att.nsa.cambria.utils.Emailer; -import com.att.nsa.cambria.beans.ApiKeyBean; -import com.att.nsa.cambria.beans.DMaaPContext; -import com.att.nsa.cambria.constants.CambriaConstants; -import com.att.nsa.cambria.security.DMaaPAuthenticatorImpl; -import com.att.nsa.cambria.service.ApiKeysService; -import com.att.nsa.cambria.utils.ConfigurationReader; -import com.att.nsa.cambria.utils.DMaaPResponseBuilder; -import com.att.nsa.configs.ConfigDbException; -import com.att.nsa.drumlin.service.standards.HttpStatusCodes; -import com.att.nsa.security.NsaApiKey; -import com.att.nsa.security.ReadWriteSecuredResource.AccessDeniedException; -import com.att.nsa.security.db.NsaApiDb; -import com.att.nsa.security.db.NsaApiDb.KeyExistsException; -import com.att.nsa.security.db.simple.NsaSimpleApiKey; - -/** - * Implementation of the ApiKeysService, this will provide the below operations, - * getAllApiKeys, getApiKey, createApiKey, updateApiKey, deleteApiKey - * - * @author author - */ -@Service -public class ApiKeysServiceImpl implements ApiKeysService { - - //private Logger log = Logger.getLogger(ApiKeysServiceImpl.class.toString()); - private static final EELFLogger log = EELFManager.getInstance().getLogger(ApiKeysServiceImpl.class.toString()); - /** - * This method will provide all the ApiKeys present in kafka server. - * - * @param dmaapContext - * @throws ConfigDbException - * @throws IOException - */ - public void getAllApiKeys(DMaaPContext dmaapContext) - throws ConfigDbException, IOException { - - ConfigurationReader configReader = dmaapContext.getConfigReader(); - - log.info("configReader : " + configReader.toString()); - - final JSONObject result = new JSONObject(); - final JSONArray keys = new JSONArray(); - result.put("apiKeys", keys); - - NsaApiDb<NsaSimpleApiKey> apiDb = configReader.getfApiKeyDb(); - - for (String key : apiDb.loadAllKeys()) { - keys.put(key); - } - log.info("========== ApiKeysServiceImpl: getAllApiKeys: Api Keys are : " - + keys.toString() + "==========="); - DMaaPResponseBuilder.respondOk(dmaapContext, result); - } - - /** - * @param dmaapContext - * @param apikey - * @throws ConfigDbException - * @throws IOException - */ - @Override - public void getApiKey(DMaaPContext dmaapContext, String apikey) - throws ConfigDbException, IOException { - - String errorMsg = "Api key name is not mentioned."; - int errorCode = HttpStatusCodes.k400_badRequest; - - if (null != apikey) { - NsaSimpleApiKey simpleApiKey = getApiKeyDb(dmaapContext) - .loadApiKey(apikey); - - - if (null != simpleApiKey) { - JSONObject result = simpleApiKey.asJsonObject(); - DMaaPResponseBuilder.respondOk(dmaapContext, result); - log.info("========== ApiKeysServiceImpl: getApiKey : " - + result.toString() + "==========="); - return; - } else { - errorMsg = "Api key [" + apikey + "] does not exist."; - errorCode = HttpStatusCodes.k404_notFound; - log.info("========== ApiKeysServiceImpl: getApiKey: Error : API Key does not exist. " - + "==========="); - DMaaPResponseBuilder.respondWithError(dmaapContext, errorCode, - errorMsg); - throw new IOException(); - } - } - - } - - /** - * @param dmaapContext - * @param nsaApiKey - * @throws KeyExistsException - * @throws ConfigDbException - * @throws IOException - */ - @Override - public void createApiKey(DMaaPContext dmaapContext, ApiKeyBean nsaApiKey) - throws KeyExistsException, ConfigDbException, IOException { - - log.debug("TopicService: : createApiKey...."); - - - String contactEmail = nsaApiKey.getEmail(); - final boolean emailProvided = contactEmail != null && contactEmail.length() > 0 && contactEmail.indexOf("@") > 1 ; - String kSetting_AllowAnonymousKeys= com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,"apiKeys.allowAnonymous"); - if(null==kSetting_AllowAnonymousKeys) kSetting_AllowAnonymousKeys ="false"; - - // if ((contactEmail == null) || (contactEmail.length() == 0)) - if ( kSetting_AllowAnonymousKeys.equalsIgnoreCase("true") && !emailProvided ) - { - DMaaPResponseBuilder.respondWithErrorInJson(dmaapContext, 400, "You must provide an email address."); - return; - } - - - - - final NsaApiDb<NsaSimpleApiKey> apiKeyDb = getApiKeyDb(dmaapContext); - String apiKey = nsaApiKey.getKey(); - String sharedSecret = nsaApiKey.getSharedSecret(); - final NsaSimpleApiKey key = apiKeyDb.createApiKey(apiKey, - sharedSecret); - - if (null != key) { - - if (null != nsaApiKey.getEmail()) { - key.setContactEmail(nsaApiKey.getEmail()); - } - - if (null != nsaApiKey.getDescription()) { - key.setDescription(nsaApiKey.getDescription()); - } - - log.debug("=======ApiKeysServiceImpl: createApiKey : saving api key : " - + key.toString() + "====="); - apiKeyDb.saveApiKey(key); - // email out the secret to validate the email address - if ( emailProvided ) - { - String body = "\n" + "Your email address was provided as the creator of new API key \"" - + apiKey + "\".\n" + "\n" + "If you did not make this request, please let us know." - + " See http://sa2020.it.att.com:8888 for contact information, " + "but don't worry -" - + " the API key is useless without the information below, which has been provided " - + "only to you.\n" + "\n\n" + "For API key \"" + apiKey + "\", use API key secret:\n\n\t" - + sharedSecret + "\n\n" + "Note that it's normal to share the API key" - + " (" + apiKey + "). " - + "This is how you are granted access to resources " + "like a UEB topic or Flatiron scope. " - + "However, you should NOT share the API key's secret. " + "The API key is associated with your" - + " email alone. ALL access to data made with this " + "key will be your responsibility. If you " - + "share the secret, someone else can use the API key " + "to access proprietary data with your " - + "identity.\n" + "\n" + "Enjoy!\n" + "\n" + "The GFP/SA-2020 Team"; - - Emailer em = dmaapContext.getConfigReader().getSystemEmailer(); - em.send(contactEmail, "New API Key", body); - } - log.debug("TopicService: : sending response."); - - JSONObject o = key.asJsonObject(); - - o.put ( NsaSimpleApiKey.kApiSecretField, - emailProvided ? - "Emailed to " + contactEmail + "." : - key.getSecret () - ); - DMaaPResponseBuilder.respondOk(dmaapContext, - o); - /*o.put("secret", "Emailed to " + contactEmail + "."); - DMaaPResponseBuilder.respondOk(dmaapContext, - o); */ - return; - } else { - log.debug("=======ApiKeysServiceImpl: createApiKey : Error in creating API Key.====="); - DMaaPResponseBuilder.respondWithError(dmaapContext, - HttpStatusCodes.k500_internalServerError, - "Failed to create api key."); - throw new KeyExistsException(apiKey); - } - } - - /** - * @param dmaapContext - * @param apikey - * @param nsaApiKey - * @throws ConfigDbException - * @throws IOException - * @throws AccessDeniedException - */ - @Override - public void updateApiKey(DMaaPContext dmaapContext, String apikey, - ApiKeyBean nsaApiKey) throws ConfigDbException, IOException, AccessDeniedException { - - String errorMsg = "Api key name is not mentioned."; - int errorCode = HttpStatusCodes.k400_badRequest; - - if (null != apikey) { - final NsaApiDb<NsaSimpleApiKey> apiKeyDb = getApiKeyDb(dmaapContext); - final NsaSimpleApiKey key = apiKeyDb.loadApiKey(apikey); - boolean shouldUpdate = false; - - if (null != key) { - final NsaApiKey user = DMaaPAuthenticatorImpl - .getAuthenticatedUser(dmaapContext); - - if (user == null || !user.getKey().equals(key.getKey())) { - throw new AccessDeniedException("You must authenticate with the key you'd like to update."); - } - - if (null != nsaApiKey.getEmail()) { - key.setContactEmail(nsaApiKey.getEmail()); - shouldUpdate = true; - } - - if (null != nsaApiKey.getDescription()) { - key.setDescription(nsaApiKey.getDescription()); - shouldUpdate = true; - } - - if (shouldUpdate) { - apiKeyDb.saveApiKey(key); - } - - log.info("======ApiKeysServiceImpl : updateApiKey : Key Updated Successfully :" - + key.toString() + "========="); - DMaaPResponseBuilder.respondOk(dmaapContext, - key.asJsonObject()); - return; - } - } else { - errorMsg = "Api key [" + apikey + "] does not exist."; - errorCode = HttpStatusCodes.k404_notFound; - DMaaPResponseBuilder.respondWithError(dmaapContext, errorCode, - errorMsg); - log.info("======ApiKeysServiceImpl : updateApiKey : Error in Updating Key.============"); - throw new IOException(); - } - } - - /** - * @param dmaapContext - * @param apikey - * @throws ConfigDbException - * @throws IOException - * @throws AccessDeniedException - */ - @Override - public void deleteApiKey(DMaaPContext dmaapContext, String apikey) - throws ConfigDbException, IOException, AccessDeniedException { - - String errorMsg = "Api key name is not mentioned."; - int errorCode = HttpStatusCodes.k400_badRequest; - - if (null != apikey) { - final NsaApiDb<NsaSimpleApiKey> apiKeyDb = getApiKeyDb(dmaapContext); - final NsaSimpleApiKey key = apiKeyDb.loadApiKey(apikey); - - if (null != key) { - - final NsaApiKey user = DMaaPAuthenticatorImpl - .getAuthenticatedUser(dmaapContext); - if (user == null || !user.getKey().equals(key.getKey())) { - throw new AccessDeniedException("You don't own the API key."); - } - - apiKeyDb.deleteApiKey(key); - log.info("======ApiKeysServiceImpl : deleteApiKey : Deleted Key successfully.============"); - DMaaPResponseBuilder.respondOkWithHtml(dmaapContext, - "Api key [" + apikey + "] deleted successfully."); - return; - } - } else { - errorMsg = "Api key [" + apikey + "] does not exist."; - errorCode = HttpStatusCodes.k404_notFound; - DMaaPResponseBuilder.respondWithError(dmaapContext, errorCode, - errorMsg); - log.info("======ApiKeysServiceImpl : deleteApiKey : Error while deleting key.============"); - throw new IOException(); - } - } - - /** - * - * @param dmaapContext - * @return - */ - private NsaApiDb<NsaSimpleApiKey> getApiKeyDb(DMaaPContext dmaapContext) { - ConfigurationReader configReader = dmaapContext.getConfigReader(); - return configReader.getfApiKeyDb(); - } - -} |