/** * Authenticate the request * * @param context * @param version * @param accessToken * @param requiredAuthenticationLevel * @param clientDomain * @return * @throws APIManagementException * @throws APIFaultException */ public boolean doAuthenticate( String context, String version, String accessToken, String requiredAuthenticationLevel, String clientDomain) throws APIManagementException, APIFaultException { if (APIConstants.AUTH_NO_AUTHENTICATION.equals(requiredAuthenticationLevel)) { return true; } APITokenValidator tokenValidator = new APITokenValidator(); apiKeyValidationDTO = tokenValidator.validateKey( context, version, accessToken, requiredAuthenticationLevel, clientDomain); if (apiKeyValidationDTO.isAuthorized()) { String userName = apiKeyValidationDTO.getEndUserName(); PrivilegedCarbonContext.getThreadLocalCarbonContext() .setUsername(apiKeyValidationDTO.getEndUserName()); try { PrivilegedCarbonContext.getThreadLocalCarbonContext() .setTenantId(IdentityUtil.getTenantIdOFUser(userName)); } catch (IdentityException e) { log.error("Error while retrieving Tenant Id", e); return false; } return true; } else { throw new APIFaultException( apiKeyValidationDTO.getValidationStatus(), "Access failure for API: " + context + ", version: " + version + " with key: " + accessToken); } }