Search in sources :

Example 46 with ProvisioningConnectorConfig

use of org.wso2.carbon.identity.application.common.model.ProvisioningConnectorConfig in project carbon-identity-framework by wso2.

the class IdPManagementDAO method addProvisioningConnectorConfigs.

/**
 * @param provisioningConnectors
 * @param dbConnection
 * @param idpId
 * @throws IdentityProviderManagementException
 * @throws SQLException
 */
private void addProvisioningConnectorConfigs(ProvisioningConnectorConfig[] provisioningConnectors, Connection dbConnection, int idpId, int tenantId) throws IdentityProviderManagementException, SQLException {
    PreparedStatement prepStmt = null;
    PreparedStatement prepBaseStmt = null;
    ResultSet rs = null;
    try {
        // SP_IDP_ID,SP_IDP_PROV_CONNECTOR_TYPE, SP_IDP_PROV_CONFIG_KEY,
        // SP_IDP_PROV_CONFIG_VALUE, SP_IDP_PROV_CONFIG_IS_SECRET
        // SP_IDP_PROV_CONFIG_PROPERTY
        // TENANT_ID, PROVISIONING_CONFIG_ID, PROPERTY_KEY, PROPERTY_VALUE, PROPERTY_TYPE,
        // IS_SECRET
        String sqlStmt = IdPManagementConstants.SQLQueries.ADD_IDP_PROVISIONING_PROPERTY_SQL;
        prepStmt = dbConnection.prepareStatement(sqlStmt);
        String sqlBaseStmt = IdPManagementConstants.SQLQueries.ADD_IDP_PROVISIONING_CONFIG_SQL;
        String dbProductName = dbConnection.getMetaData().getDatabaseProductName();
        prepBaseStmt = dbConnection.prepareStatement(sqlBaseStmt, new String[] { DBUtils.getConvertedAutoGeneratedColumnName(dbProductName, "ID") });
        if (provisioningConnectors != null) {
            for (ProvisioningConnectorConfig connector : provisioningConnectors) {
                Property[] connctorProperties = connector.getProvisioningProperties();
                if (connctorProperties != null) {
                    // SP_IDP_PROVISIONING_CONFIG
                    // TENANT_ID, IDP_ID, PROVISIONING_CONNECTOR_TYPE, IS_ENABLED, IS_DEFAULT
                    prepBaseStmt.setInt(1, tenantId);
                    prepBaseStmt.setInt(2, idpId);
                    prepBaseStmt.setString(3, connector.getName());
                    if (connector.isEnabled()) {
                        prepBaseStmt.setString(4, IdPManagementConstants.IS_TRUE_VALUE);
                    } else {
                        prepBaseStmt.setString(4, IdPManagementConstants.IS_FALSE_VALUE);
                    }
                    if (connector.isBlocking()) {
                        prepBaseStmt.setString(5, IdPManagementConstants.IS_TRUE_VALUE);
                    } else {
                        prepBaseStmt.setString(5, IdPManagementConstants.IS_FALSE_VALUE);
                    }
                    prepBaseStmt.executeUpdate();
                    rs = prepBaseStmt.getGeneratedKeys();
                    if (rs.next()) {
                        int provisioningConfigID = rs.getInt(1);
                        if (connctorProperties.length > 0) {
                            for (Property config : connctorProperties) {
                                if (config == null) {
                                    continue;
                                }
                                // SP_IDP_PROV_CONFIG_PROPERTY
                                // TENANT_ID, PROVISIONING_CONFIG_ID, PROPERTY_KEY,
                                // PROPERTY_VALUE, PROPERTY_BLOB_VALUE, PROPERTY_TYPE, IS_SECRET
                                prepStmt.setInt(1, tenantId);
                                prepStmt.setInt(2, provisioningConfigID);
                                prepStmt.setString(3, config.getName());
                                // TODO : Sect property type accordingly
                                if (IdentityApplicationConstants.ConfigElements.PROPERTY_TYPE_BLOB.equals(config.getType())) {
                                    prepStmt.setString(4, null);
                                    setBlobValue(config.getValue(), prepStmt, 5);
                                    prepStmt.setString(6, config.getType());
                                } else {
                                    prepStmt.setString(4, config.getValue());
                                    setBlobValue(null, prepStmt, 5);
                                    prepStmt.setString(6, IdentityApplicationConstants.ConfigElements.PROPERTY_TYPE_STRING);
                                }
                                if (config.isConfidential()) {
                                    prepStmt.setString(7, IdPManagementConstants.IS_TRUE_VALUE);
                                } else {
                                    prepStmt.setString(7, IdPManagementConstants.IS_FALSE_VALUE);
                                }
                                prepStmt.addBatch();
                            }
                        }
                    }
                    // Adding properties for base config
                    prepStmt.executeBatch();
                }
            }
        }
    } catch (IOException e) {
        throw new IdentityProviderManagementException("An error occurred while processing content stream.", e);
    } finally {
        IdentityDatabaseUtil.closeAllConnections(null, rs, prepStmt);
        IdentityDatabaseUtil.closeStatement(prepBaseStmt);
    }
}
Also used : ResultSet(java.sql.ResultSet) PreparedStatement(java.sql.PreparedStatement) IOException(java.io.IOException) IdentityProviderProperty(org.wso2.carbon.identity.application.common.model.IdentityProviderProperty) Property(org.wso2.carbon.identity.application.common.model.Property) IdentityProviderManagementException(org.wso2.carbon.idp.mgt.IdentityProviderManagementException) ProvisioningConnectorConfig(org.wso2.carbon.identity.application.common.model.ProvisioningConnectorConfig)

Example 47 with ProvisioningConnectorConfig

use of org.wso2.carbon.identity.application.common.model.ProvisioningConnectorConfig in project carbon-identity-framework by wso2.

the class IdentityProviderManagementServiceTest method testGetAllProvisioningConnectors.

@Test
public void testGetAllProvisioningConnectors() throws Exception {
    ProvisioningConnectorConfig[] allProvisioningConnectors = identityProviderManagementService.getAllProvisioningConnectors();
    Assert.assertNull(allProvisioningConnectors);
    ProvisioningConnectorConfig provisioningConnectorConfig1 = mock(ProvisioningConnectorConfig.class);
    provisioningConnectorConfig1.setName("ProvisiningConfig1");
    ProvisioningConnectorConfig provisioningConnectorConfig2 = mock(ProvisioningConnectorConfig.class);
    provisioningConnectorConfig2.setName("ProvisiningConfig2");
    provisioningConnectorConfig2.setEnabled(true);
    provisioningConnectorConfig2.setBlocking(true);
    ProvisioningConnectorService.getInstance().addProvisioningConnectorConfigs(provisioningConnectorConfig1);
    allProvisioningConnectors = identityProviderManagementService.getAllProvisioningConnectors();
    Assert.assertEquals(allProvisioningConnectors.length, 1);
    ProvisioningConnectorService.getInstance().addProvisioningConnectorConfigs(provisioningConnectorConfig2);
    allProvisioningConnectors = identityProviderManagementService.getAllProvisioningConnectors();
    Assert.assertEquals(allProvisioningConnectors.length, 2);
    // Clear after the test.
    ProvisioningConnectorService.getInstance().removeProvisioningConnectorConfigs(provisioningConnectorConfig1);
    ProvisioningConnectorService.getInstance().removeProvisioningConnectorConfigs(provisioningConnectorConfig2);
    allProvisioningConnectors = identityProviderManagementService.getAllProvisioningConnectors();
    Assert.assertNull(allProvisioningConnectors);
}
Also used : ProvisioningConnectorConfig(org.wso2.carbon.identity.application.common.model.ProvisioningConnectorConfig) Test(org.testng.annotations.Test)

Example 48 with ProvisioningConnectorConfig

use of org.wso2.carbon.identity.application.common.model.ProvisioningConnectorConfig in project carbon-identity-framework by wso2.

the class IdentityProviderManagementServiceTest method updateIdPData.

@DataProvider
public Object[][] updateIdPData() {
    // Initialize New Test Identity Provider 1.
    IdentityProvider idp1New = new IdentityProvider();
    idp1New.setIdentityProviderName("testIdP1New");
    idp1New.setEnable(true);
    idp1New.setPrimary(true);
    idp1New.setFederationHub(true);
    idp1New.setCertificate("");
    RoleMapping newRoleMapping1 = new RoleMapping();
    newRoleMapping1.setRemoteRole("Role1New");
    newRoleMapping1.setLocalRole(new LocalRole("1", "LocalRole1"));
    RoleMapping newRoleMapping2 = new RoleMapping();
    newRoleMapping2.setRemoteRole("Role2New");
    newRoleMapping2.setLocalRole(new LocalRole("2", "LocalRole2"));
    PermissionsAndRoleConfig newPermissionsAndRoleConfig = new PermissionsAndRoleConfig();
    newPermissionsAndRoleConfig.setIdpRoles(new String[] { "Role1New", "Role2New" });
    newPermissionsAndRoleConfig.setRoleMappings(new RoleMapping[] { newRoleMapping1, newRoleMapping2 });
    idp1New.setPermissionAndRoleConfig(newPermissionsAndRoleConfig);
    FederatedAuthenticatorConfig newFederatedAuthenticatorConfig = new FederatedAuthenticatorConfig();
    newFederatedAuthenticatorConfig.setDisplayName("DisplayName1New");
    newFederatedAuthenticatorConfig.setName("Name");
    newFederatedAuthenticatorConfig.setEnabled(true);
    Property newProperty1 = new Property();
    newProperty1.setName("Property1New");
    newProperty1.setValue("value1New");
    newProperty1.setConfidential(false);
    Property newProperty2 = new Property();
    newProperty2.setName("Property2New");
    newProperty2.setValue("value2New");
    newProperty2.setConfidential(false);
    newFederatedAuthenticatorConfig.setProperties(new Property[] { newProperty1, newProperty2 });
    idp1New.setFederatedAuthenticatorConfigs(new FederatedAuthenticatorConfig[] { newFederatedAuthenticatorConfig });
    ProvisioningConnectorConfig newProvisioningConnectorConfig1 = new ProvisioningConnectorConfig();
    newProvisioningConnectorConfig1.setName("ProvisiningConfig1");
    newProvisioningConnectorConfig1.setProvisioningProperties(new Property[] { newProperty1 });
    ProvisioningConnectorConfig newProvisioningConnectorConfig2 = new ProvisioningConnectorConfig();
    newProvisioningConnectorConfig2.setName("ProvisiningConfig2");
    newProvisioningConnectorConfig2.setProvisioningProperties(new Property[] { newProperty2 });
    newProvisioningConnectorConfig2.setEnabled(true);
    newProvisioningConnectorConfig2.setBlocking(true);
    idp1New.setProvisioningConnectorConfigs(new ProvisioningConnectorConfig[] { newProvisioningConnectorConfig1, newProvisioningConnectorConfig2 });
    ClaimConfig newClaimConfig = new ClaimConfig();
    newClaimConfig.setLocalClaimDialect(false);
    newClaimConfig.setRoleClaimURI("Country");
    newClaimConfig.setUserClaimURI("Country");
    ClaimMapping claimMapping = ClaimMapping.build("http://wso2.org/claims/country", "Country", "", true);
    Claim remoteClaim = new Claim();
    remoteClaim.setClaimId(0);
    remoteClaim.setClaimUri("Country");
    newClaimConfig.setClaimMappings(new ClaimMapping[] { claimMapping });
    newClaimConfig.setIdpClaims(new Claim[] { remoteClaim });
    idp1New.setClaimConfig(newClaimConfig);
    // Initialize New Test Identity Provider 2.
    IdentityProvider idp2New = new IdentityProvider();
    idp2New.setIdentityProviderName("testIdP2New");
    // Initialize New Test Identity Provider 3.
    IdentityProvider idp3New = new IdentityProvider();
    idp3New.setIdentityProviderName("testIdP3New");
    return new Object[][] { // IDP with PermissionsAndRoleConfig,FederatedAuthenticatorConfig,ProvisioningConnectorConfig,ClaimConf.
    { "testIdP1", idp1New }, // New IDP with Only name.
    { "testIdP2", idp2New }, // New IDP with Only name.
    { "testIdP3", idp3New } };
}
Also used : ClaimMapping(org.wso2.carbon.identity.application.common.model.ClaimMapping) PermissionsAndRoleConfig(org.wso2.carbon.identity.application.common.model.PermissionsAndRoleConfig) FederatedAuthenticatorConfig(org.wso2.carbon.identity.application.common.model.FederatedAuthenticatorConfig) ClaimConfig(org.wso2.carbon.identity.application.common.model.ClaimConfig) IdentityProvider(org.wso2.carbon.identity.application.common.model.IdentityProvider) LocalRole(org.wso2.carbon.identity.application.common.model.LocalRole) Matchers.anyObject(org.mockito.Matchers.anyObject) RoleMapping(org.wso2.carbon.identity.application.common.model.RoleMapping) IdentityProviderProperty(org.wso2.carbon.identity.application.common.model.IdentityProviderProperty) Property(org.wso2.carbon.identity.application.common.model.Property) ProvisioningConnectorConfig(org.wso2.carbon.identity.application.common.model.ProvisioningConnectorConfig) Claim(org.wso2.carbon.identity.application.common.model.Claim) LocalClaim(org.wso2.carbon.identity.claim.metadata.mgt.model.LocalClaim) DataProvider(org.testng.annotations.DataProvider)

Example 49 with ProvisioningConnectorConfig

use of org.wso2.carbon.identity.application.common.model.ProvisioningConnectorConfig in project carbon-identity-framework by wso2.

the class IdentityProviderDAOImpl method getIdentityProvider.

@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);
    }
}
Also used : FederatedAuthenticatorConfig(org.wso2.carbon.identity.application.common.model.FederatedAuthenticatorConfig) IdentityApplicationManagementException(org.wso2.carbon.identity.application.common.IdentityApplicationManagementException) ArrayList(java.util.ArrayList) IdentityProvider(org.wso2.carbon.identity.application.common.model.IdentityProvider) IdentityProviderManager(org.wso2.carbon.idp.mgt.IdentityProviderManager) IdentityProviderManagementException(org.wso2.carbon.idp.mgt.IdentityProviderManagementException) ProvisioningConnectorConfig(org.wso2.carbon.identity.application.common.model.ProvisioningConnectorConfig)

Example 50 with ProvisioningConnectorConfig

use of org.wso2.carbon.identity.application.common.model.ProvisioningConnectorConfig in project carbon-identity-framework by wso2.

the class IdPManagementUIUtil method buildSCIMProvisioningConfiguration.

/**
 * @param fedIdp
 * @param paramMap
 * @throws IdentityApplicationManagementException
 */
private static void buildSCIMProvisioningConfiguration(IdentityProvider fedIdp, Map<String, String> paramMap) throws IdentityApplicationManagementException {
    ProvisioningConnectorConfig proConnector = new ProvisioningConnectorConfig();
    proConnector.setName("scim");
    Property userNameProp = null;
    Property passwordProp = null;
    Property userEpProp = null;
    Property groupEpProp = null;
    Property scimUserStoreDomain = null;
    Property scimEnablePwdProvisioning = null;
    Property defaultPwdProp = null;
    Property uniqueID = null;
    if (paramMap.get("scimProvEnabled") != null && "on".equals(paramMap.get("scimProvEnabled"))) {
        proConnector.setEnabled(true);
    } else {
        proConnector.setEnabled(false);
    }
    if (paramMap.get("scimProvDefault") != null && "on".equals(paramMap.get("scimProvDefault"))) {
        fedIdp.setDefaultProvisioningConnectorConfig(proConnector);
    }
    if (paramMap.get("scim-username") != null) {
        userNameProp = new Property();
        userNameProp.setName("scim-username");
        userNameProp.setValue(paramMap.get("scim-username"));
    }
    if (paramMap.get("scim-password") != null) {
        passwordProp = new Property();
        passwordProp.setConfidential(true);
        passwordProp.setName("scim-password");
        passwordProp.setValue(paramMap.get("scim-password"));
    }
    if (paramMap.get("scim-user-ep") != null) {
        userEpProp = new Property();
        userEpProp.setName("scim-user-ep");
        userEpProp.setValue(paramMap.get("scim-user-ep"));
    }
    if (paramMap.get("scim-group-ep") != null) {
        groupEpProp = new Property();
        groupEpProp.setName("scim-group-ep");
        groupEpProp.setValue(paramMap.get("scim-group-ep"));
    }
    if (paramMap.get("scim-user-store-domain") != null) {
        scimUserStoreDomain = new Property();
        scimUserStoreDomain.setName("scim-user-store-domain");
        scimUserStoreDomain.setValue(paramMap.get("scim-user-store-domain"));
    }
    if (paramMap.get("scimPwdProvEnabled") != null && "on".equals(paramMap.get("scimPwdProvEnabled"))) {
        scimEnablePwdProvisioning = new Property();
        scimEnablePwdProvisioning.setName("scim-enable-pwd-provisioning");
        scimEnablePwdProvisioning.setDefaultValue("false");
        scimEnablePwdProvisioning.setValue("true");
    }
    if (paramMap.get("scim-default-pwd") != null) {
        defaultPwdProp = new Property();
        defaultPwdProp.setName("scim-default-pwd");
        defaultPwdProp.setValue(paramMap.get("scim-default-pwd"));
    }
    if (paramMap.get("scim-unique-id") != null) {
        uniqueID = new Property();
        uniqueID.setName("UniqueID");
        uniqueID.setValue(paramMap.get("scim-unique-id"));
    }
    Property[] proProperties = new Property[] { userNameProp, passwordProp, userEpProp, groupEpProp, scimUserStoreDomain, scimEnablePwdProvisioning, defaultPwdProp, uniqueID };
    proConnector.setProvisioningProperties(proProperties);
    ProvisioningConnectorConfig[] proConnectors = fedIdp.getProvisioningConnectorConfigs();
    if (proConnector.getName() != null) {
        if (proConnectors == null || proConnectors.length == 0) {
            fedIdp.setProvisioningConnectorConfigs(new ProvisioningConnectorConfig[] { proConnector });
        } else {
            fedIdp.setProvisioningConnectorConfigs(concatArrays(new ProvisioningConnectorConfig[] { proConnector }, proConnectors));
        }
    }
}
Also used : Property(org.wso2.carbon.identity.application.common.model.idp.xsd.Property) IdentityProviderProperty(org.wso2.carbon.identity.application.common.model.idp.xsd.IdentityProviderProperty) ProvisioningConnectorConfig(org.wso2.carbon.identity.application.common.model.idp.xsd.ProvisioningConnectorConfig)

Aggregations

ProvisioningConnectorConfig (org.wso2.carbon.identity.application.common.model.ProvisioningConnectorConfig)39 IdentityProvider (org.wso2.carbon.identity.application.common.model.IdentityProvider)19 IdentityProviderProperty (org.wso2.carbon.identity.application.common.model.IdentityProviderProperty)19 Property (org.wso2.carbon.identity.application.common.model.Property)19 ArrayList (java.util.ArrayList)17 IdentityProviderManagementException (org.wso2.carbon.idp.mgt.IdentityProviderManagementException)14 ClaimConfig (org.wso2.carbon.identity.application.common.model.ClaimConfig)10 FederatedAuthenticatorConfig (org.wso2.carbon.identity.application.common.model.FederatedAuthenticatorConfig)10 ProvisioningConnectorConfig (org.wso2.carbon.identity.application.common.model.idp.xsd.ProvisioningConnectorConfig)10 PreparedStatement (java.sql.PreparedStatement)9 Property (org.wso2.carbon.identity.application.common.model.idp.xsd.Property)9 Test (org.testng.annotations.Test)8 Claim (org.wso2.carbon.identity.application.common.model.Claim)7 ClaimMapping (org.wso2.carbon.identity.application.common.model.ClaimMapping)7 LocalRole (org.wso2.carbon.identity.application.common.model.LocalRole)7 PermissionsAndRoleConfig (org.wso2.carbon.identity.application.common.model.PermissionsAndRoleConfig)7 RoleMapping (org.wso2.carbon.identity.application.common.model.RoleMapping)7 ResultSet (java.sql.ResultSet)6 HashMap (java.util.HashMap)6 JustInTimeProvisioningConfig (org.wso2.carbon.identity.application.common.model.JustInTimeProvisioningConfig)6