@Override protected AbstractOutboundProvisioningConnector buildConnector( Property[] provisioningProperties) throws IdentityProvisioningException { SalesforceProvisioningConnector salesforceConnector = new SalesforceProvisioningConnector(); salesforceConnector.init(provisioningProperties); if (log.isDebugEnabled()) { log.debug("Salesforce provisioning connector created successfully."); } return salesforceConnector; }
/** * builds salesforce user end point using configurations * * @return */ private String getUserObjectEndpoint() { boolean isDebugEnabled = log.isDebugEnabled(); String url = configHolder.getValue(SalesforceConnectorConstants.PropertyConfig.DOMAIN_NAME) + SalesforceConnectorConstants.CONTEXT_SERVICES_DATA + configHolder.getValue(SalesforceConnectorConstants.PropertyConfig.API_VERSION) + SalesforceConnectorConstants.CONTEXT_SOOBJECTS_USER; if (isDebugEnabled) { log.debug("Built user endpoint url : " + url); } return url; }
protected void activate(ComponentContext context) { if (log.isDebugEnabled()) { log.debug("Activating SalesforceConnectorServiceComponent"); } try { SalesforceProvisioningConnectorFactory salesforceProvisioningConnectorFactory = new SalesforceProvisioningConnectorFactory(); context.getBundleContext().registerService( AbstractProvisioningConnectorFactory.class.getName(), salesforceProvisioningConnectorFactory, null); if (log.isDebugEnabled()) { log.debug("Salesforce Identity Provisioning Connector bundle is activated"); } } catch (Throwable e) { log.error(" Error while activating Salesforce Identity Provisioning Connector ", e); } } }
if (provisioningEntity.isJitProvisioning() && !isJitProvisioningEnabled()) { log.debug("JIT provisioning disabled for Salesforce connector"); return null; deleteUser(provisioningEntity); } else if (provisioningEntity.getOperation() == ProvisioningOperation.POST) { provisionedId = createUser(provisioningEntity); } else if (provisioningEntity.getOperation() == ProvisioningOperation.PUT) { update(provisioningEntity.getIdentifier().getIdentifier(), buildJsonObject(provisioningEntity)); } else { log.warn("Unsupported provisioning opertaion.");
JSONObject user = buildJsonObject(provisioningEntity); PostMethod post = new PostMethod(this.getUserObjectEndpoint()); setAuthorizationHeader(post); + " text : " + post.getStatusText()); if (isDebugEnabled) { log.debug("Error response : " + readResponse(post));
String provisioningPattern = this.configHolder.getValue(SalesforceConnectorConstants.PropertyConfig.PROVISIONING_PATTERN_KEY); if (StringUtils.isBlank(provisioningPattern)) { log.info("Provisioning pattern is not defined, hence using default provisioning pattern"); provisioningPattern = SalesforceConnectorConstants.PropertyConfig.DEFAULT_PROVISIONING_PATTERN; String provisioningSeparator = this.configHolder.getValue(SalesforceConnectorConstants.PropertyConfig.PROVISIONING_SEPERATOR_KEY); if (StringUtils.isBlank(provisioningSeparator)) { log.info("Provisioning separator is not defined, hence using default provisioning separator"); provisioningSeparator = SalesforceConnectorConstants.PropertyConfig.DEFAULT_PROVISIONING_SEPERATOR; String idpName = this.configHolder.getValue(SalesforceConnectorConstants.PropertyConfig.IDP_NAME_KEY); Map<String, String> requiredAttributes = getSingleValuedClaims(provisioningEntity .getAttributes()); String userIdClaimURL = this.configHolder.getValue(SalesforceConnectorConstants.PropertyConfig.USER_ID_CLAIM_URI_KEY); String provisioningDomain = this.configHolder.getValue(SalesforceConnectorConstants.PropertyConfig.PROVISIONING_DOMAIN_KEY); String userId = provisioningEntity.getEntityName(); userIdFromPattern = buildUserId(provisioningEntity, provisioningPattern, provisioningSeparator, idpName);
PostMethod patch = new PostMethod(this.getUserObjectEndpoint() + provsionedId) { @Override public String getName() { setAuthorizationHeader(patch); patch.setRequestEntity(new StringRequestEntity(entity.toString(), "application/json", null)); + " text : " + patch.getStatusText()); if (isDebugEnabled) { log.debug("Error response : " + readResponse(patch));
/** * @param provisioningEntity * @throws IdentityProvisioningException */ private void deleteUser(ProvisioningEntity provisioningEntity) throws IdentityProvisioningException { JSONObject entity = new JSONObject(); try { entity.put(SalesforceConnectorConstants.IS_ACTIVE, false); entity.put(SalesforceConnectorConstants.USERNAME_ATTRIBUTE, alterUsername(provisioningEntity)); update(provisioningEntity.getIdentifier().getIdentifier(), entity); } catch (JSONException e) { log.error("Error while creating JSON body"); throw new IdentityProvisioningException(e); } }
GetMethod get = new GetMethod(this.getDataQueryEndpoint()); setAuthorizationHeader(get);
@Override /** * */ public void init(Property[] provisioningProperties) throws IdentityProvisioningException { Properties configs = new Properties(); if (provisioningProperties != null && provisioningProperties.length > 0) { for (Property property : provisioningProperties) { configs.put(property.getName(), property.getValue()); if (IdentityProvisioningConstants.JIT_PROVISIONING_ENABLED.equals(property .getName()) && "1".equals(property.getValue())) { jitProvisioningEnabled = true; } } } configHolder = new SalesforceProvisioningConnectorConfig(configs); }
/** * adding OAuth authorization headers to a httpMethod * * @param httpMethod method which wants to add Authorization header */ private void setAuthorizationHeader(HttpMethodBase httpMethod) throws IdentityProvisioningException { boolean isDebugEnabled = log.isDebugEnabled(); String accessToken = authenticate(); if (StringUtils.isNotBlank(accessToken)) { httpMethod.setRequestHeader(SalesforceConnectorConstants.AUTHORIZATION_HEADER_NAME, SalesforceConnectorConstants.AUTHORIZATION_HEADER_OAUTH + " " + accessToken); if (isDebugEnabled) { log.debug("Setting authorization header for method : " + httpMethod.getName() + " as follows,"); Header authorizationHeader = httpMethod .getRequestHeader(SalesforceConnectorConstants.AUTHORIZATION_HEADER_NAME); log.debug(authorizationHeader.getName() + ": " + authorizationHeader.getValue()); } } else { throw new IdentityProvisioningException("Authentication failed"); } }
/** * Builds Salesforce query point using configurations * * @return */ private String getDataQueryEndpoint() { if (log.isTraceEnabled()) { log.trace("Starting getDataQueryEndpoint() of " + SalesforceProvisioningConnector.class); } boolean isDebugEnabled = log.isDebugEnabled(); String url = configHolder.getValue(SalesforceConnectorConstants.PropertyConfig.DOMAIN_NAME) + SalesforceConnectorConstants.CONTEXT_SERVICES_DATA + configHolder.getValue(SalesforceConnectorConstants.PropertyConfig.API_VERSION) + SalesforceConnectorConstants.CONTEXT_QUERY; if (isDebugEnabled) { log.debug("Built query endpoint url : " + url); } return url; }
String url = configHolder.getValue(SalesforceConnectorConstants.PropertyConfig.OAUTH2_TOKEN_ENDPOINT); configHolder.getValue(SalesforceConnectorConstants.PropertyConfig.CLIENT_ID)); post.addParameter(SalesforceConnectorConstants.CLIENT_SECRET, configHolder.getValue(SalesforceConnectorConstants.PropertyConfig.CLIENT_SECRET)); post.addParameter(SalesforceConnectorConstants.PASSWORD, configHolder.getValue(SalesforceConnectorConstants.PropertyConfig.PASSWORD)); post.addParameter(SalesforceConnectorConstants.GRANT_TYPE, SalesforceConnectorConstants.GRANT_TYPE_PASSWORD); post.addParameter(SalesforceConnectorConstants.USERNAME, configHolder.getValue(SalesforceConnectorConstants.PropertyConfig.USERNAME));