use of org.wso2.carbon.identity.application.common.model.xsd.Claim in project carbon-identity-framework by wso2.
the class ProvisioningUtil method getMappedClaims.
public static Map<ClaimMapping, List<String>> getMappedClaims(ClaimMapping[] outboundClaimMappings, Map<String, String> inboundClaimValueMap, String inboundClaimMappingDialect, Map<ClaimMapping, List<String>> outboundClaimValueMappings, String tenantDomain) throws IdentityApplicationManagementException {
try {
if (MapUtils.isEmpty(inboundClaimValueMap)) {
// the out-bound claim mapping.
if (outboundClaimMappings != null && outboundClaimMappings.length > 0) {
for (ClaimMapping mapping : outboundClaimMappings) {
if (mapping.getDefaultValue() != null) {
outboundClaimValueMappings.put(mapping, Arrays.asList(new String[] { mapping.getDefaultValue() }));
}
}
}
return outboundClaimValueMappings;
}
if (outboundClaimMappings == null || outboundClaimMappings.length == 0) {
// we cannot find out-bound claim dialect - return what we have.
return outboundClaimValueMappings;
}
Map<String, String> claimMap = null;
// out-bound is not in wso2 carbon dialect. we need to find how it maps to wso2
// carbon dialect.
Map<String, String> carbonToInboundClaimMapping = null;
// we only know the dialect - it is standard claim dialect.
// returns the carbon claim mapping corresponding to claims in the the in-bound
// provisioning request with carbon in-bound claim uris as the key.
carbonToInboundClaimMapping = ClaimMetadataHandler.getInstance().getMappingsMapFromOtherDialectToCarbon(inboundClaimMappingDialect, inboundClaimValueMap.keySet(), tenantDomain, true);
claimMap = new HashMap<String, String>();
Map<String, String> outboundClaimDefaultValues = new HashMap<String, String>();
for (ClaimMapping outboundClaimMapping : outboundClaimMappings) {
String inboundClaim = null;
if (outboundClaimMapping.getLocalClaim() != null) {
inboundClaim = carbonToInboundClaimMapping.get(outboundClaimMapping.getLocalClaim().getClaimUri());
}
claimMap.put(outboundClaimMapping.getRemoteClaim().getClaimUri(), inboundClaim);
outboundClaimDefaultValues.put(outboundClaimMapping.getRemoteClaim().getClaimUri(), outboundClaimMapping.getDefaultValue());
}
if (claimMap.isEmpty()) {
return outboundClaimValueMappings;
}
for (Iterator<Map.Entry<String, String>> iterator = claimMap.entrySet().iterator(); iterator.hasNext(); ) {
Map.Entry<String, String> entry = iterator.next();
String outboundClaimUri = entry.getKey();
String inboundClaimUri = entry.getValue();
if (inboundClaimUri != null && inboundClaimValueMap.get(inboundClaimUri) != null) {
outboundClaimValueMappings.put(ClaimMapping.build(inboundClaimUri, outboundClaimUri, outboundClaimDefaultValues.get(outboundClaimUri), false), Arrays.asList(new String[] { inboundClaimValueMap.get(inboundClaimUri) }));
} else {
outboundClaimValueMappings.put(ClaimMapping.build(inboundClaimUri, outboundClaimUri, outboundClaimDefaultValues.get(outboundClaimUri), false), Arrays.asList(new String[] { outboundClaimDefaultValues.get(outboundClaimUri) }));
}
}
} catch (Exception e) {
throw new IdentityApplicationManagementException("Error while loading claim mappings.", e);
}
return outboundClaimValueMappings;
}
use of org.wso2.carbon.identity.application.common.model.xsd.Claim in project carbon-identity-framework by wso2.
the class ProvisioningUtil method getMappedClaims.
public static Map<ClaimMapping, List<String>> getMappedClaims(String outboundClaimDialect, Map<String, String> inboundClaimValueMap, String inboundClaimMappingDialect, Map<ClaimMapping, List<String>> outboundClaimValueMappings, String tenantDomain) throws IdentityApplicationManagementException {
try {
if (MapUtils.isEmpty(inboundClaimValueMap)) {
return outboundClaimValueMappings;
}
Map<String, String> claimMap = null;
if (IdentityApplicationConstants.WSO2CARBON_CLAIM_DIALECT.equals(inboundClaimMappingDialect)) {
// in-bound dialect is in default carbon dialect.
// otherDialectURI, carbonClaimURIs, tenantDomain, carbonDialectAsKey
// this map will have out-bound dialect as the key.
claimMap = ClaimMetadataHandler.getInstance().getMappingsMapFromOtherDialectToCarbon(outboundClaimDialect, null, tenantDomain, true);
} else {
// out-bound is not in wso2 carbon dialect. we need to find how it maps to wso2
// carbon dialect.
Map<String, String> inboundToCarbonClaimMaping = null;
Map<String, String> outBoundToCarbonClaimMappping = null;
// this will return back the mapped carbon dialect for the in-bound claims in the
// in-bound provisioning request.
// the key of this map will be in in-bound claim dialect.
inboundToCarbonClaimMaping = ClaimMetadataHandler.getInstance().getMappingsMapFromOtherDialectToCarbon(inboundClaimMappingDialect, inboundClaimValueMap.keySet(), tenantDomain, false);
// we only know the dialect - it is standard claim dialect.
// this will return back all the wso2 carbon claims mapped to the out-bound dialect.
// we send null here because we do not know the required claims for out-bound
// provisioning.
// the key of this map will be in carbon dialect.
outBoundToCarbonClaimMappping = ClaimMetadataHandler.getInstance().getMappingsMapFromOtherDialectToCarbon(outboundClaimDialect, null, tenantDomain, true);
// in-bound dialect / out-bound dialect.
claimMap = new HashMap<String, String>();
for (Iterator<Map.Entry<String, String>> iterator = inboundToCarbonClaimMaping.entrySet().iterator(); iterator.hasNext(); ) {
Map.Entry<String, String> entry = iterator.next();
String outboundClaim = outBoundToCarbonClaimMappping.get(entry.getValue());
if (outboundClaim != null) {
claimMap.put(entry.getKey(), outboundClaim);
}
}
}
if (claimMap.isEmpty()) {
return outboundClaimValueMappings;
}
// through the in-bound provisioning claim map.
for (Iterator<Map.Entry<String, String>> iterator = claimMap.entrySet().iterator(); iterator.hasNext(); ) {
Map.Entry<String, String> entry = iterator.next();
String outboundClaimUri = entry.getValue();
String inboundClaimUri = entry.getKey();
String claimValue = null;
if (outboundClaimUri != null) {
claimValue = inboundClaimValueMap.get(inboundClaimUri);
}
if (claimValue != null) {
outboundClaimValueMappings.put(ClaimMapping.build(inboundClaimUri, outboundClaimUri, null, false), Arrays.asList(new String[] { claimValue }));
}
}
} catch (Exception e) {
throw new IdentityApplicationManagementException("Error while loading claim mappings.", e);
}
return outboundClaimValueMappings;
}
use of org.wso2.carbon.identity.application.common.model.xsd.Claim in project carbon-identity-framework by wso2.
the class OutboundProvisioningManager method getUserClaims.
/**
* @param userName
* @param tenantDomain
* @return
* @throws CarbonException
* @throws UserStoreException
*/
private Map<String, String> getUserClaims(String userName, String tenantDomain) throws CarbonException, UserStoreException {
Map<String, String> inboundAttributes = new HashMap<>();
RegistryService registryService = IdentityProvisionServiceComponent.getRegistryService();
RealmService realmService = IdentityProvisionServiceComponent.getRealmService();
UserRealm realm = AnonymousSessionUtil.getRealmByTenantDomain(registryService, realmService, tenantDomain);
UserStoreManager userstore = null;
userstore = realm.getUserStoreManager();
Claim[] claimArray = null;
try {
claimArray = userstore.getUserClaimValues(userName, null);
} catch (UserStoreException e) {
if (e.getMessage().contains("UserNotFound")) {
if (log.isDebugEnabled()) {
log.debug("User " + userName + " not found in user store");
}
} else {
throw e;
}
}
if (claimArray != null) {
for (Claim claim : claimArray) {
inboundAttributes.put(claim.getClaimUri(), claim.getValue());
}
}
return inboundAttributes;
}
use of org.wso2.carbon.identity.application.common.model.xsd.Claim in project carbon-identity-framework by wso2.
the class DefaultInboundUserProvisioningListener method doPostUpdateRoleListOfUser.
@Override
public boolean doPostUpdateRoleListOfUser(String userName, String[] deletedRoles, String[] newRoles, UserStoreManager userStoreManager) throws UserStoreException {
if (!isEnable()) {
return true;
}
String[] roleList = userStoreManager.getRoleListOfUser(userName);
Map<String, String> inboundAttributes = new HashMap<>();
Map<ClaimMapping, List<String>> outboundAttributes = new HashMap<>();
if (userName != null) {
outboundAttributes.put(ClaimMapping.build(IdentityProvisioningConstants.USERNAME_CLAIM_URI, null, null, false), Arrays.asList(new String[] { userName }));
}
if (roleList != null && roleList.length > 0) {
outboundAttributes.put(ClaimMapping.build(IdentityProvisioningConstants.GROUP_CLAIM_URI, null, null, false), Arrays.asList(roleList));
}
if (newRoles != null && roleList.length > 0) {
outboundAttributes.put(ClaimMapping.build(IdentityProvisioningConstants.NEW_GROUP_CLAIM_URI, null, null, false), Arrays.asList(newRoles));
}
if (deletedRoles != null && deletedRoles.length > 0) {
outboundAttributes.put(ClaimMapping.build(IdentityProvisioningConstants.DELETED_GROUP_CLAIM_URI, null, null, false), Arrays.asList(deletedRoles));
}
String domainName = UserCoreUtil.getDomainName(userStoreManager.getRealmConfiguration());
if (log.isDebugEnabled()) {
log.debug("Adding domain name : " + domainName + " to user : " + userName);
}
String domainAwareName = UserCoreUtil.addDomainToName(userName, domainName);
ProvisioningEntity provisioningEntity = new ProvisioningEntity(ProvisioningEntityType.USER, domainAwareName, ProvisioningOperation.PUT, outboundAttributes);
Claim[] claimArray = null;
try {
claimArray = userStoreManager.getUserClaimValues(userName, null);
} catch (UserStoreException e) {
if (e.getMessage().contains("UserNotFound")) {
if (log.isDebugEnabled()) {
log.debug("User " + userName + " not found in user store");
}
} else {
throw e;
}
}
if (claimArray != null) {
for (Claim claim : claimArray) {
inboundAttributes.put(claim.getClaimUri(), claim.getValue());
}
}
provisioningEntity.setInboundAttributes(inboundAttributes);
String tenantDomainName = CarbonContext.getThreadLocalCarbonContext().getTenantDomain();
ThreadLocalProvisioningServiceProvider threadLocalServiceProvider;
threadLocalServiceProvider = IdentityApplicationManagementUtil.getThreadLocalProvisioningServiceProvider();
if (threadLocalServiceProvider != null) {
String serviceProvider = threadLocalServiceProvider.getServiceProviderName();
tenantDomainName = threadLocalServiceProvider.getTenantDomain();
if (threadLocalServiceProvider.getServiceProviderType() == ProvisioningServiceProviderType.OAUTH) {
try {
serviceProvider = ApplicationManagementService.getInstance().getServiceProviderNameByClientId(threadLocalServiceProvider.getServiceProviderName(), IdentityApplicationConstants.OAuth2.NAME, tenantDomainName);
} catch (IdentityApplicationManagementException e) {
log.error("Error while provisioning", e);
return true;
}
}
// call framework method to provision the user.
OutboundProvisioningManager.getInstance().provision(provisioningEntity, serviceProvider, threadLocalServiceProvider.getClaimDialect(), tenantDomainName, threadLocalServiceProvider.isJustInTimeProvisioning());
} else {
// call framework method to provision the user.
OutboundProvisioningManager.getInstance().provision(provisioningEntity, ApplicationConstants.LOCAL_SP, IdentityProvisioningConstants.WSO2_CARBON_DIALECT, tenantDomainName, false);
}
return true;
}
use of org.wso2.carbon.identity.application.common.model.xsd.Claim in project carbon-identity-framework by wso2.
the class DefaultInboundUserProvisioningListener method doPreAddUser.
@Override
public boolean doPreAddUser(String userName, Object credential, String[] roleList, Map<String, String> inboundAttributes, String profile, UserStoreManager userStoreManager) throws UserStoreException {
if (!isEnable()) {
return true;
}
Map<ClaimMapping, List<String>> outboundAttributes = new HashMap<>();
if (credential != null) {
outboundAttributes.put(ClaimMapping.build(IdentityProvisioningConstants.PASSWORD_CLAIM_URI, null, null, false), Arrays.asList(new String[] { ((StringBuffer) credential).toString() }));
}
if (userName != null) {
outboundAttributes.put(ClaimMapping.build(IdentityProvisioningConstants.USERNAME_CLAIM_URI, null, null, false), Arrays.asList(new String[] { userName }));
}
if (roleList != null) {
outboundAttributes.put(ClaimMapping.build(IdentityProvisioningConstants.GROUP_CLAIM_URI, null, null, false), Arrays.asList(roleList));
}
String domainName = UserCoreUtil.getDomainName(userStoreManager.getRealmConfiguration());
if (log.isDebugEnabled()) {
log.debug("Adding domain name : " + domainName + " to user : " + userName);
}
String domainAwareName = UserCoreUtil.addDomainToName(userName, domainName);
ProvisioningEntity provisioningEntity = new ProvisioningEntity(ProvisioningEntityType.USER, domainAwareName, ProvisioningOperation.POST, outboundAttributes);
// set the in-bound attribute list.in this particular case this is in the wso2.org claim
// dialect.
provisioningEntity.setInboundAttributes(inboundAttributes);
String tenantDomainName = CarbonContext.getThreadLocalCarbonContext().getTenantDomain();
ThreadLocalProvisioningServiceProvider threadLocalServiceProvider;
threadLocalServiceProvider = IdentityApplicationManagementUtil.getThreadLocalProvisioningServiceProvider();
if (threadLocalServiceProvider != null) {
String serviceProvider = threadLocalServiceProvider.getServiceProviderName();
tenantDomainName = threadLocalServiceProvider.getTenantDomain();
if (threadLocalServiceProvider.getServiceProviderType() == ProvisioningServiceProviderType.OAUTH) {
try {
serviceProvider = ApplicationManagementService.getInstance().getServiceProviderNameByClientId(threadLocalServiceProvider.getServiceProviderName(), IdentityApplicationConstants.OAuth2.NAME, tenantDomainName);
} catch (IdentityApplicationManagementException e) {
log.error("Error while provisioning", e);
return true;
}
}
// call framework method to provision the user.
OutboundProvisioningManager.getInstance().provision(provisioningEntity, serviceProvider, threadLocalServiceProvider.getClaimDialect(), tenantDomainName, threadLocalServiceProvider.isJustInTimeProvisioning());
} else {
// call framework method to provision the user.
OutboundProvisioningManager.getInstance().provision(provisioningEntity, ApplicationConstants.LOCAL_SP, IdentityProvisioningConstants.WSO2_CARBON_DIALECT, tenantDomainName, false);
}
return true;
}
Aggregations