use of org.wso2.carbon.apimgt.api.model.KeyManager in project carbon-apimgt by wso2.
the class APIManagerComponent method activate.
@Activate
protected void activate(ComponentContext componentContext) throws Exception {
if (log.isDebugEnabled()) {
log.debug("API manager component activated");
}
try {
BundleContext bundleContext = componentContext.getBundleContext();
addRxtConfigs();
addApplicationsPermissionsToRegistry();
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
String filePath = CarbonUtils.getCarbonConfigDirPath() + File.separator + "api-manager.xml";
configuration.load(filePath);
String gatewayType = configuration.getFirstProperty(APIConstants.API_GATEWAY_TYPE);
if (APIConstants.API_GATEWAY_TYPE_SYNAPSE.equalsIgnoreCase(gatewayType)) {
addDefinedSequencesToRegistry();
}
CommonConfigDeployer configDeployer = new CommonConfigDeployer();
bundleContext.registerService(Axis2ConfigurationContextObserver.class.getName(), configDeployer, null);
TenantLoadMessageSender tenantLoadMessageSender = new TenantLoadMessageSender();
bundleContext.registerService(Axis2ConfigurationContextObserver.class.getName(), tenantLoadMessageSender, null);
KeyMgtConfigDeployer keyMgtConfigDeployer = new KeyMgtConfigDeployer();
bundleContext.registerService(Axis2ConfigurationContextObserver.class.getName(), keyMgtConfigDeployer, null);
// Registering Notifiers
bundleContext.registerService(Notifier.class.getName(), new SubscriptionsNotifier(), null);
bundleContext.registerService(Notifier.class.getName(), new ApisNotifier(), null);
bundleContext.registerService(Notifier.class.getName(), new ApplicationNotifier(), null);
bundleContext.registerService(Notifier.class.getName(), new ApplicationRegistrationNotifier(), null);
bundleContext.registerService(Notifier.class.getName(), new PolicyNotifier(), null);
bundleContext.registerService(Notifier.class.getName(), new DeployAPIInGatewayNotifier(), null);
bundleContext.registerService(Notifier.class.getName(), new ScopesNotifier(), null);
bundleContext.registerService(Notifier.class.getName(), new CertificateNotifier(), null);
bundleContext.registerService(Notifier.class.getName(), new GoogleAnalyticsNotifier(), null);
bundleContext.registerService(Notifier.class.getName(), new ExternalGatewayNotifier(), null);
bundleContext.registerService(Notifier.class.getName(), new ExternallyDeployedApiNotifier(), null);
APIManagerConfigurationServiceImpl configurationService = new APIManagerConfigurationServiceImpl(configuration);
ServiceReferenceHolder.getInstance().setAPIManagerConfigurationService(configurationService);
APIMgtDBUtil.initialize();
APIMConfigService apimConfigService = new APIMConfigServiceImpl();
bundleContext.registerService(APIMConfigService.class.getName(), apimConfigService, null);
APIUtil.loadAndSyncTenantConf(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
APIUtil.loadTenantExternalStoreConfig(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
APIUtil.loadTenantGAConfig(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
APIUtil.loadTenantWorkFlowExtensions(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
// load self sigup configuration to the registry
APIUtil.loadTenantSelfSignUpConfigurations(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
APIUtil.loadCommonOperationPolicies(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
APIManagerAnalyticsConfiguration analyticsConfiguration = APIManagerAnalyticsConfiguration.getInstance();
analyticsConfiguration.setAPIManagerConfiguration(configuration);
registration = componentContext.getBundleContext().registerService(APIManagerConfigurationService.class.getName(), configurationService, null);
KeyManagerConfigurationServiceImpl keyManagerConfigurationService = new KeyManagerConfigurationServiceImpl();
registration = componentContext.getBundleContext().registerService(KeyManagerConfigurationService.class, keyManagerConfigurationService, null);
JWTValidationService jwtValidationService = new JWTValidationServiceImpl();
registration = componentContext.getBundleContext().registerService(JWTValidationService.class, jwtValidationService, null);
ServiceReferenceHolder.getInstance().setKeyManagerConfigurationService(keyManagerConfigurationService);
APIStatusObserverList.getInstance().init(configuration);
log.debug("Reading Analytics Configuration from file...");
// This method is called in two places. Mostly by the time activate hits,
// ServiceDataPublisherAdmin is not activated. Therefore, this same method is run,
// when ServiceDataPublisherAdmin is set.
AuthorizationUtils.addAuthorizeRoleListener(APIConstants.AM_CREATOR_APIMGT_EXECUTION_ID, RegistryUtils.getAbsolutePath(RegistryContext.getBaseInstance(), APIUtil.getMountedPath(RegistryContext.getBaseInstance(), RegistryConstants.GOVERNANCE_REGISTRY_BASE_PATH) + APIConstants.API_APPLICATION_DATA_LOCATION), APIConstants.Permissions.API_CREATE, UserMgtConstants.EXECUTE_ACTION, null);
AuthorizationUtils.addAuthorizeRoleListener(APIConstants.AM_CREATOR_GOVERNANCE_EXECUTION_ID, RegistryUtils.getAbsolutePath(RegistryContext.getBaseInstance(), APIUtil.getMountedPath(RegistryContext.getBaseInstance(), RegistryConstants.GOVERNANCE_REGISTRY_BASE_PATH) + "/trunk"), APIConstants.Permissions.API_CREATE, UserMgtConstants.EXECUTE_ACTION, null);
AuthorizationUtils.addAuthorizeRoleListener(APIConstants.AM_PUBLISHER_APIMGT_EXECUTION_ID, RegistryUtils.getAbsolutePath(RegistryContext.getBaseInstance(), APIUtil.getMountedPath(RegistryContext.getBaseInstance(), RegistryConstants.GOVERNANCE_REGISTRY_BASE_PATH) + APIConstants.API_APPLICATION_DATA_LOCATION), APIConstants.Permissions.API_PUBLISH, UserMgtConstants.EXECUTE_ACTION, null);
// Enabling API Publishers/Creators to make changes on life-cycle history.
AuthorizationUtils.addAuthorizeRoleListener(APIConstants.AM_CREATOR_LIFECYCLE_EXECUTION_ID, RegistryUtils.getAbsolutePath(RegistryContext.getBaseInstance(), APIUtil.getMountedPath(RegistryContext.getBaseInstance(), RegistryConstants.GOVERNANCE_REGISTRY_BASE_PATH) + APIConstants.API_LIFE_CYCLE_HISTORY), APIConstants.Permissions.API_CREATE, UserMgtConstants.EXECUTE_ACTION, null);
AuthorizationUtils.addAuthorizeRoleListener(APIConstants.AM_PUBLISHER_LIFECYCLE_EXECUTION_ID, RegistryUtils.getAbsolutePath(RegistryContext.getBaseInstance(), APIUtil.getMountedPath(RegistryContext.getBaseInstance(), RegistryConstants.GOVERNANCE_REGISTRY_BASE_PATH) + APIConstants.API_LIFE_CYCLE_HISTORY), APIConstants.Permissions.API_PUBLISH, UserMgtConstants.EXECUTE_ACTION, null);
setupImagePermissions();
GatewayArtifactsMgtDBUtil.initialize();
configureEventPublisherProperties();
configureNotificationEventPublisher();
// Load initially available api contexts at the server startup. This Cache is only use by the products other than the api-manager
/* TODO: Load Config values from apimgt.core*/
boolean apiManagementEnabled = APIUtil.isAPIManagementEnabled();
boolean loadAPIContextsAtStartup = APIUtil.isLoadAPIContextsAtStartup();
if (apiManagementEnabled && loadAPIContextsAtStartup) {
List<String> contextList = ApiMgtDAO.getInstance().getAllAvailableContexts();
Cache contextCache = APIUtil.getAPIContextCache();
for (String context : contextList) {
contextCache.put(context, Boolean.TRUE);
}
}
try {
APIUtil.createDefaultRoles(MultitenantConstants.SUPER_TENANT_ID);
} catch (APIManagementException e) {
log.error("Failed create default roles for tenant " + MultitenantConstants.SUPER_TENANT_ID, e);
} catch (Exception e) {
// The generic Exception is handled explicitly so execution does not stop during config deployment
log.error("Exception when creating default roles for tenant " + MultitenantConstants.SUPER_TENANT_ID, e);
}
// Adding default throttle policies
addDefaultAdvancedThrottlePolicies();
// Update all NULL THROTTLING_TIER values to Unlimited
boolean isNullThrottlingTierConversionEnabled = APIUtil.updateNullThrottlingTierAtStartup();
try {
if (isNullThrottlingTierConversionEnabled) {
ApiMgtDAO.getInstance().convertNullThrottlingTiers();
}
} catch (APIManagementException e) {
log.error("Failed to convert NULL THROTTLING_TIERS to Unlimited");
}
// // Initialise KeyManager.
// KeyManagerHolder.initializeKeyManager(configuration);
// Initialise sql constants
SQLConstantManagerFactory.initializeSQLConstantManager();
// Initialize PasswordResolver
PasswordResolverFactory.initializePasswordResolver();
APIUtil.init();
// Activating UserPostSelfRegistration handler componeAPITemplateBuilderImplnt
try {
registration = componentContext.getBundleContext().registerService(AbstractEventHandler.class.getName(), new UserPostSelfRegistrationHandler(), null);
} catch (Exception e) {
log.error("Error while activating UserPostSelfRegistration handler component.", e);
}
// Read the trust store
ServerConfiguration config = CarbonUtils.getServerConfiguration();
// Initialize product REST API token caches
CacheProvider.createRESTAPITokenCache();
CacheProvider.createRESTAPIInvalidTokenCache();
CacheProvider.createGatewayJWTTokenCache();
CacheProvider.createTenantConfigCache();
CacheProvider.createRecommendationsCache();
CacheProvider.createParsedSignJWTCache();
CacheProvider.createGatewayBasicAuthResourceCache();
CacheProvider.createGatewayUsernameCache();
CacheProvider.createIntrospectionCache();
// Initialize Recommendation wso2event output publisher
configureRecommendationEventPublisherProperties();
setupAccessTokenGenerator();
retrieveAndSetParentTrustStore();
if (configuration.getGatewayArtifactSynchronizerProperties().isRetrieveFromStorageEnabled()) {
if (APIConstants.GatewayArtifactSynchronizer.DB_RETRIEVER_NAME.equals(configuration.getGatewayArtifactSynchronizerProperties().getRetrieverName())) {
bundleContext.registerService(ArtifactRetriever.class.getName(), new DBRetriever(), null);
}
}
bundleContext.registerService(ScopeValidator.class, new SystemScopesIssuer(), null);
} catch (APIManagementException e) {
log.error("Error while initializing the API manager component", e);
} catch (APIManagerDatabaseException e) {
log.fatal("Error while Creating the database", e);
}
}
use of org.wso2.carbon.apimgt.api.model.KeyManager in project carbon-apimgt by wso2.
the class AbstractKeyManagerConnectorConfiguration method convertJsonToConnectorConfiguration.
private void convertJsonToConnectorConfiguration() {
configListMap.put(CONNECTOR_CONFIGURATION, Collections.emptyList());
configListMap.put(APPLICATION_CONFIGURATIONS, Collections.EMPTY_LIST);
String connectorConfigPath = CarbonBaseUtils.getCarbonHome() + File.separator + "repository" + File.separator + "resources" + File.separator + "keyManager-extensions" + File.separator + getType() + ".json";
File file = new File(connectorConfigPath);
if (file.exists()) {
try (FileInputStream fileInputStream = new FileInputStream(file)) {
String content = IOUtils.toString(fileInputStream);
Gson gson = new Gson();
Type configurationDtoType = new TypeToken<Map<String, List<ConfigurationDto>>>() {
}.getType();
configListMap = gson.fromJson(content, configurationDtoType);
} catch (IOException e) {
log.error("Error while reading connector configuration", e);
}
}
}
use of org.wso2.carbon.apimgt.api.model.KeyManager in project carbon-apimgt by wso2.
the class ApplicationRegistrationWSWorkflowExecutorTest method testFailureToCompleteApplicationRegistrationWSWFWhenKeyGenerationFailed.
@Test
public void testFailureToCompleteApplicationRegistrationWSWFWhenKeyGenerationFailed() throws Exception {
applicationRegistrationWSWorkflowExecutor.setUsername(adminUsername);
applicationRegistrationWSWorkflowExecutor.setPassword(adminPassword.toCharArray());
workflowDTO.setStatus(WorkflowStatus.APPROVED);
PowerMockito.doThrow(new APIManagementException("Error occurred when updating the status of the Application " + "Registration process")).when(keyManager).createApplication((OAuthAppRequest) Mockito.anyObject());
try {
applicationRegistrationWSWorkflowExecutor.complete(workflowDTO);
Assert.fail("Expected WorkflowException has not occurred while completing application registration " + "workflow");
} catch (WorkflowException e) {
Assert.assertEquals(e.getMessage(), "Error occurred when updating the status of the Application " + "Registration process");
}
}
use of org.wso2.carbon.apimgt.api.model.KeyManager in project carbon-apimgt by wso2.
the class ApplicationRegistrationSimpleWorkflowExecutorTest method init.
@Before
public void init() throws APIManagementException {
PowerMockito.mockStatic(ApiMgtDAO.class);
PowerMockito.mockStatic(KeyManagerHolder.class);
apiMgtDAO = Mockito.mock(ApiMgtDAO.class);
keyManager = Mockito.mock(KeyManager.class);
application = new Application("test", new Subscriber("testUser"));
oAuthAppRequest = new OAuthAppRequest();
oAuthApplicationInfo = new OAuthApplicationInfo();
oAuthAppRequest.setOAuthApplicationInfo(oAuthApplicationInfo);
workflowDTO = new ApplicationRegistrationWorkflowDTO();
workflowDTO.setWorkflowReference("1");
workflowDTO.setApplication(application);
workflowDTO.setAppInfoDTO(oAuthAppRequest);
workflowDTO.setKeyManager("default");
KeyManagerConfigurationDTO kmConfigDTO = new KeyManagerConfigurationDTO();
kmConfigDTO.setOrganization("carbon.super");
kmConfigDTO.setName("default");
PowerMockito.when(apiMgtDAO.getKeyManagerConfigurationByUUID("default")).thenReturn(kmConfigDTO);
PowerMockito.when(ApiMgtDAO.getInstance()).thenReturn(apiMgtDAO);
PowerMockito.when(KeyManagerHolder.getKeyManagerInstance("carbon.super", "default")).thenReturn(keyManager);
KeyManagerConfiguration keyManagerConfiguration = new KeyManagerConfiguration();
Mockito.when(keyManager.getKeyManagerConfiguration()).thenReturn(keyManagerConfiguration);
applicationRegistrationSimpleWorkflowExecutor = new ApplicationRegistrationSimpleWorkflowExecutor();
}
use of org.wso2.carbon.apimgt.api.model.KeyManager in project carbon-apimgt by wso2.
the class ApplicationUtilsTestCase method testCrateOauthAppRequest.
@Test
public void testCrateOauthAppRequest() throws APIManagementException {
PowerMockito.mockStatic(KeyManagerHolder.class);
PowerMockito.when(KeyManagerHolder.getKeyManagerInstance("carbon.super", "default")).thenReturn(keyManager);
OAuthAppRequest oAuthAppRequest = ApplicationUtils.createOauthAppRequest("client1", "clientId", "http://foo.com", "subscribe", "details", "DEFAULT", "carbon.super", "default");
Assert.assertNotNull(oAuthAppRequest);
}
Aggregations