/*
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you 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.
*/
package org.wso2.carbon.identity.application.mgt.dao.impl;
import org.apache.commons.collections.CollectionUtils;
import org.wso2.carbon.context.CarbonContext;
import org.wso2.carbon.identity.application.common.ApplicationAuthenticatorService;
import org.wso2.carbon.identity.application.common.IdentityApplicationManagementException;
import org.wso2.carbon.identity.application.common.model.FederatedAuthenticatorConfig;
import org.wso2.carbon.identity.application.common.model.IdentityProvider;
import org.wso2.carbon.identity.application.common.model.LocalAuthenticatorConfig;
import org.wso2.carbon.identity.application.common.model.ProvisioningConnectorConfig;
import org.wso2.carbon.identity.application.common.model.RequestPathAuthenticatorConfig;
import org.wso2.carbon.identity.application.mgt.dao.IdentityProviderDAO;
import org.wso2.carbon.idp.mgt.IdentityProviderManagementException;
import org.wso2.carbon.idp.mgt.IdentityProviderManager;
import java.util.ArrayList;
import java.util.List;
public class IdentityProviderDAOImpl implements IdentityProviderDAO {
public static final String BASIC = "basic";
public static final String IWA = "iwa";
public static final String OAUTH_BEARER = "oauth-bearer";
public static final String BASIC_AUTH = "basic-auth";
public static final String SAML_SSO = "samlsso";
public static final String OPENID_CONNECT = "openidconnect";
public static final String OPENID = "openid";
public static final String PASSIVE_STS = "passive-sts";
public static final String FACEBOOK_AUTH = "facebook";
/**
* @param idpName
* @return
* @throws IdentityApplicationManagementException
*/
@Override
public String getDefaultAuthenticator(String idpName)
throws IdentityApplicationManagementException {
IdentityProviderManager idpManager = IdentityProviderManager.getInstance();
try {
IdentityProvider idp = idpManager.getIdPByName(idpName, CarbonContext
.getThreadLocalCarbonContext().getTenantDomain());
return idp.getDefaultAuthenticatorConfig() != null ? idp
.getDefaultAuthenticatorConfig().getName() : null;
} catch (IdentityProviderManagementException e) {
throw new IdentityApplicationManagementException("Error when retrieving default authenticator of idp "
+ idpName, e);
}
}
@Override
/**
*
*/
public IdentityProvider getIdentityProvider(String idpName)
throws IdentityApplicationManagementException {
IdentityProviderManager idpManager = IdentityProviderManager.getInstance();
try {
IdentityProvider idp = idpManager.getIdPByName(idpName, CarbonContext
.getThreadLocalCarbonContext().getTenantDomain());
IdentityProvider identityProvider = new IdentityProvider();
identityProvider.setIdentityProviderName(idp.getIdentityProviderName());
FederatedAuthenticatorConfig defaultAuthenticator = new FederatedAuthenticatorConfig();
defaultAuthenticator.setName(getDefaultAuthenticator(idp.getIdentityProviderName()));
List<FederatedAuthenticatorConfig> federatedAuthenticators = new ArrayList<FederatedAuthenticatorConfig>();
FederatedAuthenticatorConfig[] federatedAuthenticatorConfigs = idp
.getFederatedAuthenticatorConfigs();
if (federatedAuthenticatorConfigs != null && federatedAuthenticatorConfigs.length > 0) {
for (FederatedAuthenticatorConfig config : federatedAuthenticatorConfigs) {
if (config.isEnabled()) {
federatedAuthenticators.add(config);
}
}
}
if (CollectionUtils.isNotEmpty(federatedAuthenticators)) {
identityProvider.setFederatedAuthenticatorConfigs(federatedAuthenticators
.toArray(new FederatedAuthenticatorConfig[federatedAuthenticators.size()]));
}
List<ProvisioningConnectorConfig> provisioningConnectors = new ArrayList<ProvisioningConnectorConfig>();
ProvisioningConnectorConfig[] provisioningConnectorConfigs = idp.getProvisioningConnectorConfigs();
if (provisioningConnectorConfigs != null && provisioningConnectorConfigs.length > 0) {
for (ProvisioningConnectorConfig config : provisioningConnectorConfigs) {
if (config.isEnabled()) {
provisioningConnectors.add(config);
}
}
}
if (CollectionUtils.isNotEmpty(provisioningConnectors)) {
identityProvider.setProvisioningConnectorConfigs(provisioningConnectors
.toArray(new ProvisioningConnectorConfig[provisioningConnectors.size()]));
}
identityProvider.setEnable(idp.isEnable());
return identityProvider;
} catch (IdentityProviderManagementException e) {
throw new IdentityApplicationManagementException("Error when retrieving identity provider "+ idpName, e);
}
}
@Override
/**
*
*/
public List<IdentityProvider> getAllIdentityProviders()
throws IdentityApplicationManagementException {
IdentityProviderManager idpManager = IdentityProviderManager.getInstance();
List<IdentityProvider> idps;
try {
idps = idpManager
.getIdPs(CarbonContext.getThreadLocalCarbonContext().getTenantDomain());
} catch (IdentityProviderManagementException e) {
throw new IdentityApplicationManagementException("Error when retrieving all identity providers in " +
CarbonContext.getThreadLocalCarbonContext().getTenantDomain() +" tenant domain.", e);
}
List<IdentityProvider> federatedIdentityProviders = new ArrayList<IdentityProvider>();
if (idps != null && !idps.isEmpty()) {
for (IdentityProvider idp : idps) {
federatedIdentityProviders.add(getIdentityProvider(idp.getIdentityProviderName()));
}
}
return federatedIdentityProviders;
}
@Override
/**
*
*/
public List<LocalAuthenticatorConfig> getAllLocalAuthenticators()
throws IdentityApplicationManagementException {
return ApplicationAuthenticatorService.getInstance().getLocalAuthenticators();
}
@Override
/**
*
*/
public List<RequestPathAuthenticatorConfig> getAllRequestPathAuthenticators()
throws IdentityApplicationManagementException {
return ApplicationAuthenticatorService.getInstance().getRequestPathAuthenticators();
}
}