public static IdentityProviderMapperRepresentation toRepresentation(IdentityProviderMapperModel model) { IdentityProviderMapperRepresentation rep = new IdentityProviderMapperRepresentation(); rep.setId(model.getId()); rep.setIdentityProviderMapper(model.getIdentityProviderMapper()); rep.setIdentityProviderAlias(model.getIdentityProviderAlias()); Map<String, String> config = new HashMap<String, String>(); config.putAll(model.getConfig()); rep.setConfig(config); rep.setName(model.getName()); return rep; }
public static IdentityProviderMapperModel toModel(IdentityProviderMapperRepresentation rep) { IdentityProviderMapperModel model = new IdentityProviderMapperModel(); model.setId(rep.getId()); model.setName(rep.getName()); model.setIdentityProviderAlias(rep.getIdentityProviderAlias()); model.setIdentityProviderMapper(rep.getIdentityProviderMapper()); model.setConfig(rep.getConfig()); return model; }
@Override public void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) { String attribute = mapperModel.getConfig().get(CONF_USER_ATTRIBUTE); if (attribute == null || attribute.trim().isEmpty()) { logger.warnf("Attribute is not configured for mapper %s", mapperModel.getName()); return; } attribute = attribute.trim(); String value = getJsonValue(mapperModel, context); if (value != null) { context.setUserAttribute(attribute, value); } }
public static Object getClaimValue(IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) { String claim = mapperModel.getConfig().get(CLAIM); return getClaimValue(context, claim); }
@Override public void removeIdentityProviderMapper(IdentityProviderMapperModel mapping) { IdentityProviderMapperEntity toDelete = getIdentityProviderMapperEntity(mapping.getId()); if (toDelete != null) { this.realm.getIdentityProviderMappers().remove(toDelete); em.remove(toDelete); } }
@Override public IdentityProviderMapperModel getIdentityProviderMapperByName(String alias, String name) { if (updated != null) return updated.getIdentityProviderMapperByName(alias, name); List<IdentityProviderMapperModel> models = cached.getIdentityProviderMappers().getList(alias); if (models == null) return null; for (IdentityProviderMapperModel model : models) { if (model.getName().equals(name)) return model; } return null; }
identityProviderMappers.add(mapper.getIdentityProviderAlias(), mapper);
protected static String getJsonValue(IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) { String jsonField = mapperModel.getConfig().get(CONF_JSON_FIELD); if (jsonField == null || jsonField.trim().isEmpty()) { logger.warnf("JSON field path is not configured for mapper %s", mapperModel.getName()); return null; } jsonField = jsonField.trim(); if (jsonField.startsWith(JSON_PATH_DELIMITER) || jsonField.endsWith(JSON_PATH_DELIMITER) || jsonField.startsWith("[")) { logger.warnf("JSON field path is invalid %s", jsonField); return null; } JsonNode profileJsonNode = (JsonNode) context.getContextData().get(CONTEXT_JSON_NODE); String value = getJsonValue(profileJsonNode, jsonField); if (value == null) { logger.debugf("User profile JSON value '%s' is not available.", jsonField); } return value; }
@Override public void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) { String attribute = mapperModel.getConfig().get(USER_ATTRIBUTE); Object value = getClaimValue(mapperModel, context); if (value != null) { context.setUserAttribute(attribute, value.toString()); } }
@Override public IdentityProviderMapperModel getIdentityProviderMapperById(String id) { if (updated != null) return updated.getIdentityProviderMapperById(id); for (List<IdentityProviderMapperModel> models : cached.getIdentityProviderMappers().values()) { for (IdentityProviderMapperModel model : models) { if (model.getId().equals(id)) return model; } } return null; }
@Override public IdentityProviderMapperModel getIdentityProviderMapperByName(String alias, String name) { if (isUpdated()) return updated.getIdentityProviderMapperByName(alias, name); List<IdentityProviderMapperModel> models = cached.getIdentityProviderMappers().getList(alias); if (models == null) return null; for (IdentityProviderMapperModel model : models) { if (model.getName().equals(name)) return model; } return null; }
identityProviderMappers.add(mapper.getIdentityProviderAlias(), mapper);
@Override public void updateIdentityProviderMapper(IdentityProviderMapperModel mapping) { IdentityProviderMapperEntity entity = getIdentityProviderMapperEntity(mapping.getId()); entity.setIdentityProviderAlias(mapping.getIdentityProviderAlias()); entity.setIdentityProviderMapper(mapping.getIdentityProviderMapper()); if (entity.getConfig() == null) { entity.setConfig(mapping.getConfig()); } else { entity.getConfig().clear(); entity.getConfig().putAll(mapping.getConfig()); } em.flush(); }
protected IdentityProviderMapperModel entityToModel(IdentityProviderMapperEntity entity) { IdentityProviderMapperModel mapping = new IdentityProviderMapperModel(); mapping.setId(entity.getId()); mapping.setName(entity.getName()); mapping.setIdentityProviderAlias(entity.getIdentityProviderAlias()); mapping.setIdentityProviderMapper(entity.getIdentityProviderMapper()); Map<String, String> config = new HashMap<String, String>(); if (entity.getConfig() != null) config.putAll(entity.getConfig()); mapping.setConfig(config); return mapping; }
protected boolean hasClaimValue(IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) { Object value = getClaimValue(mapperModel, context); String desiredValue = mapperModel.getConfig().get(CLAIM_VALUE); return valueEquals(desiredValue, value); }
@Override public void removeIdentityProviderMapper(IdentityProviderMapperModel mapping) { IdentityProviderMapperEntity toDelete = getIdentityProviderMapperEntity(mapping.getId()); if (toDelete != null) { this.realm.getIdentityProviderMappers().remove(toDelete); updateMongoEntity(); } }
@Override public void updateIdentityProviderMapper(IdentityProviderMapperModel mapping) { IdentityProviderMapperEntity entity = getIdentityProviderMapperEntity(mapping.getId()); entity.setIdentityProviderAlias(mapping.getIdentityProviderAlias()); entity.setIdentityProviderMapper(mapping.getIdentityProviderMapper()); if (entity.getConfig() == null) { entity.setConfig(mapping.getConfig()); } else { entity.getConfig().clear(); entity.getConfig().putAll(mapping.getConfig()); } updateMongoEntity(); }
protected IdentityProviderMapperModel entityToModel(IdentityProviderMapperEntity entity) { IdentityProviderMapperModel mapping = new IdentityProviderMapperModel(); mapping.setId(entity.getId()); mapping.setName(entity.getName()); mapping.setIdentityProviderAlias(entity.getIdentityProviderAlias()); mapping.setIdentityProviderMapper(entity.getIdentityProviderMapper()); Map<String, String> config = new HashMap<String, String>(); if (entity.getConfig() != null) config.putAll(entity.getConfig()); mapping.setConfig(config); return mapping; }
@Override public void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) { String attribute = mapperModel.getConfig().get(USER_ATTRIBUTE); Object value = getClaimValue(mapperModel, context); String current = user.getFirstAttribute(attribute); if (value != null && !value.equals(current)) { user.setSingleAttribute(attribute, value.toString()); } else if (value == null) { user.removeAttribute(attribute); } }
@Override public IdentityProviderMapperModel getIdentityProviderMapperById(String id) { if (isUpdated()) return updated.getIdentityProviderMapperById(id); for (List<IdentityProviderMapperModel> models : cached.getIdentityProviderMappers().values()) { for (IdentityProviderMapperModel model : models) { if (model.getId().equals(id)) return model; } } return null; }