use of org.apache.archiva.admin.model.beans.LdapGroupMapping in project archiva by apache.
the class DefaultRedbackRuntimeConfigurationAdmin method initialize.
@PostConstruct
@Override
public void initialize() throws UserConfigurationException {
try {
RedbackRuntimeConfiguration redbackRuntimeConfiguration = getRedbackRuntimeConfiguration();
// migrate or not data from redback
if (!redbackRuntimeConfiguration.isMigratedFromRedbackConfiguration()) {
// not migrated so build a new fresh one
redbackRuntimeConfiguration = new RedbackRuntimeConfiguration();
// so migrate if available
String userManagerImpl = //
userConfiguration.getConcatenatedList(//
UserConfigurationKeys.USER_MANAGER_IMPL, DEFAULT_USER_MANAGER_IMPL);
if (StringUtils.isNotEmpty(userManagerImpl)) {
String[] impls = StringUtils.split(userManagerImpl, ',');
for (String impl : impls) {
if (StringUtils.equalsIgnoreCase("jdo", impl)) {
impl = DEFAULT_USER_MANAGER_IMPL;
}
redbackRuntimeConfiguration.getUserManagerImpls().add(impl);
}
} else {
redbackRuntimeConfiguration.getUserManagerImpls().add(DEFAULT_USER_MANAGER_IMPL);
}
String rbacManagerImpls = //
userConfiguration.getConcatenatedList(//
UserConfigurationKeys.RBAC_MANAGER_IMPL, DEFAULT_RBAC_MANAGER_IMPL);
if (StringUtils.isNotEmpty(rbacManagerImpls)) {
String[] impls = StringUtils.split(rbacManagerImpls, ',');
for (String impl : impls) {
if (StringUtils.equalsIgnoreCase("jdo", impl)) {
impl = DEFAULT_RBAC_MANAGER_IMPL;
}
redbackRuntimeConfiguration.getRbacManagerImpls().add(impl);
}
} else {
redbackRuntimeConfiguration.getRbacManagerImpls().add(DEFAULT_RBAC_MANAGER_IMPL);
}
// now ldap
LdapConfiguration ldapConfiguration = redbackRuntimeConfiguration.getLdapConfiguration();
if (ldapConfiguration == null) {
ldapConfiguration = new LdapConfiguration();
redbackRuntimeConfiguration.setLdapConfiguration(ldapConfiguration);
}
ldapConfiguration.setHostName(userConfiguration.getString(UserConfigurationKeys.LDAP_HOSTNAME, null));
ldapConfiguration.setPort(userConfiguration.getInt(UserConfigurationKeys.LDAP_PORT, -1));
ldapConfiguration.setSsl(userConfiguration.getBoolean(UserConfigurationKeys.LDAP_SSL, false));
ldapConfiguration.setBaseDn(userConfiguration.getConcatenatedList(UserConfigurationKeys.LDAP_BASEDN, null));
ldapConfiguration.setBaseGroupsDn(userConfiguration.getConcatenatedList(UserConfigurationKeys.LDAP_GROUPS_BASEDN, ldapConfiguration.getBaseDn()));
ldapConfiguration.setContextFactory(userConfiguration.getString(UserConfigurationKeys.LDAP_CONTEX_FACTORY, isSunContextFactoryAvailable() ? "com.sun.jndi.ldap.LdapCtxFactory" : ""));
ldapConfiguration.setBindDn(userConfiguration.getConcatenatedList(UserConfigurationKeys.LDAP_BINDDN, null));
ldapConfiguration.setPassword(userConfiguration.getString(UserConfigurationKeys.LDAP_PASSWORD, null));
ldapConfiguration.setAuthenticationMethod(userConfiguration.getString(UserConfigurationKeys.LDAP_AUTHENTICATION_METHOD, null));
ldapConfiguration.setWritable(userConfiguration.getBoolean(UserConfigurationKeys.LDAP_WRITABLE, false));
ldapConfiguration.setUseRoleNameAsGroup(userConfiguration.getBoolean(UserConfigurationKeys.LDAP_GROUPS_USE_ROLENAME, false));
boolean ldapBindAuthenticatorEnabled = userConfiguration.getBoolean(UserConfigurationKeys.LDAP_BIND_AUTHENTICATOR_ENABLED, false);
ldapConfiguration.setBindAuthenticatorEnabled(ldapBindAuthenticatorEnabled);
// LDAP groups mapping reading !!
// UserConfigurationKeys.LDAP_GROUPS_ROLE_START_KEY
// userConfiguration.getKeys()
Collection<String> keys = userConfiguration.getKeys();
List<LdapGroupMapping> ldapGroupMappings = new ArrayList<>();
for (String key : keys) {
if (key.startsWith(UserConfigurationKeys.LDAP_GROUPS_ROLE_START_KEY)) {
String group = StringUtils.substringAfter(key, UserConfigurationKeys.LDAP_GROUPS_ROLE_START_KEY);
String val = userConfiguration.getConcatenatedList(key, "");
if (!StringUtils.isEmpty(val)) {
String[] roles = StringUtils.split(val, ',');
ldapGroupMappings.add(new LdapGroupMapping(group, roles));
}
}
}
redbackRuntimeConfiguration.setLdapGroupMappings(ldapGroupMappings);
redbackRuntimeConfiguration.setMigratedFromRedbackConfiguration(true);
updateRedbackRuntimeConfiguration(redbackRuntimeConfiguration);
}
// we must ensure userManagerImpls list is not empty if so put at least jdo one !
if (redbackRuntimeConfiguration.getUserManagerImpls().isEmpty()) {
log.info("redbackRuntimeConfiguration with empty userManagerImpls so force at least jdo implementation !");
redbackRuntimeConfiguration.getUserManagerImpls().add("jdo");
updateRedbackRuntimeConfiguration(redbackRuntimeConfiguration);
} else {
log.info("using userManagerImpls: {}", redbackRuntimeConfiguration.getUserManagerImpls());
}
// we ensure rbacManagerImpls is not empty if so put at least cached
if (redbackRuntimeConfiguration.getRbacManagerImpls().isEmpty()) {
log.info("redbackRuntimeConfiguration with empty rbacManagerImpls so force at least cached implementation !");
redbackRuntimeConfiguration.getRbacManagerImpls().add("cached");
updateRedbackRuntimeConfiguration(redbackRuntimeConfiguration);
} else {
log.info("using rbacManagerImpls: {}", redbackRuntimeConfiguration.getRbacManagerImpls());
}
boolean save = false;
// NPE free
if (redbackRuntimeConfiguration.getUsersCacheConfiguration() == null) {
redbackRuntimeConfiguration.setUsersCacheConfiguration(new CacheConfiguration());
}
// if -1 it means non initialized to take values from the spring bean
if (redbackRuntimeConfiguration.getUsersCacheConfiguration().getTimeToIdleSeconds() < 0) {
redbackRuntimeConfiguration.getUsersCacheConfiguration().setTimeToIdleSeconds(usersCache.getTimeToIdleSeconds());
save = true;
}
usersCache.setTimeToIdleSeconds(redbackRuntimeConfiguration.getUsersCacheConfiguration().getTimeToIdleSeconds());
if (redbackRuntimeConfiguration.getUsersCacheConfiguration().getTimeToLiveSeconds() < 0) {
redbackRuntimeConfiguration.getUsersCacheConfiguration().setTimeToLiveSeconds(usersCache.getTimeToLiveSeconds());
save = true;
}
usersCache.setTimeToLiveSeconds(redbackRuntimeConfiguration.getUsersCacheConfiguration().getTimeToLiveSeconds());
if (redbackRuntimeConfiguration.getUsersCacheConfiguration().getMaxElementsInMemory() < 0) {
redbackRuntimeConfiguration.getUsersCacheConfiguration().setMaxElementsInMemory(usersCache.getMaxElementsInMemory());
save = true;
}
usersCache.setMaxElementsInMemory(redbackRuntimeConfiguration.getUsersCacheConfiguration().getMaxElementsInMemory());
if (redbackRuntimeConfiguration.getUsersCacheConfiguration().getMaxElementsOnDisk() < 0) {
redbackRuntimeConfiguration.getUsersCacheConfiguration().setMaxElementsOnDisk(usersCache.getMaxElementsOnDisk());
save = true;
}
usersCache.setMaxElementsOnDisk(redbackRuntimeConfiguration.getUsersCacheConfiguration().getMaxElementsOnDisk());
if (save) {
updateRedbackRuntimeConfiguration(redbackRuntimeConfiguration);
}
} catch (RepositoryAdminException e) {
throw new UserConfigurationException(e.getMessage(), e);
}
}
use of org.apache.archiva.admin.model.beans.LdapGroupMapping in project archiva by apache.
the class DefaultRedbackRuntimeConfigurationAdmin method build.
private org.apache.archiva.configuration.RedbackRuntimeConfiguration build(RedbackRuntimeConfiguration redbackRuntimeConfiguration) {
org.apache.archiva.configuration.RedbackRuntimeConfiguration res = getModelMapper().map(redbackRuntimeConfiguration, org.apache.archiva.configuration.RedbackRuntimeConfiguration.class);
if (redbackRuntimeConfiguration.getLdapConfiguration() == null) {
redbackRuntimeConfiguration.setLdapConfiguration(new LdapConfiguration());
}
res.setLdapConfiguration(getModelMapper().map(redbackRuntimeConfiguration.getLdapConfiguration(), org.apache.archiva.configuration.LdapConfiguration.class));
if (redbackRuntimeConfiguration.getUsersCacheConfiguration() == null) {
redbackRuntimeConfiguration.setUsersCacheConfiguration(new CacheConfiguration());
}
res.setUsersCacheConfiguration(getModelMapper().map(redbackRuntimeConfiguration.getUsersCacheConfiguration(), org.apache.archiva.configuration.CacheConfiguration.class));
List<LdapGroupMapping> ldapGroupMappings = redbackRuntimeConfiguration.getLdapGroupMappings();
if (ldapGroupMappings != null && ldapGroupMappings.size() > 0) {
List<org.apache.archiva.configuration.LdapGroupMapping> mappings = new ArrayList<>(ldapGroupMappings.size());
for (LdapGroupMapping ldapGroupMapping : ldapGroupMappings) {
org.apache.archiva.configuration.LdapGroupMapping mapping = new org.apache.archiva.configuration.LdapGroupMapping();
mapping.setGroup(ldapGroupMapping.getGroup());
mapping.setRoleNames(new ArrayList<>(ldapGroupMapping.getRoleNames()));
mappings.add(mapping);
}
res.setLdapGroupMappings(mappings);
}
return res;
}
use of org.apache.archiva.admin.model.beans.LdapGroupMapping in project archiva by apache.
the class ArchivaLdapRoleMapperConfiguration method setLdapGroupMappings.
@Override
public void setLdapGroupMappings(Map<String, List<String>> mappings) throws MappingException {
try {
RedbackRuntimeConfiguration redbackRuntimeConfiguration = redbackRuntimeConfigurationAdmin.getRedbackRuntimeConfiguration();
List<LdapGroupMapping> ldapGroupMappings = new ArrayList<>(mappings.size());
for (Map.Entry<String, List<String>> entry : mappings.entrySet()) {
ldapGroupMappings.add(new LdapGroupMapping(entry.getKey(), entry.getValue()));
}
redbackRuntimeConfiguration.setLdapGroupMappings(ldapGroupMappings);
redbackRuntimeConfigurationAdmin.updateRedbackRuntimeConfiguration(redbackRuntimeConfiguration);
} catch (RepositoryAdminException e) {
throw new MappingException(e.getMessage(), e);
}
}
use of org.apache.archiva.admin.model.beans.LdapGroupMapping in project archiva by apache.
the class ArchivaLdapRoleMapperConfiguration method getLdapGroupMappings.
@Override
public Map<String, Collection<String>> getLdapGroupMappings() throws MappingException {
try {
RedbackRuntimeConfiguration redbackRuntimeConfiguration = redbackRuntimeConfigurationAdmin.getRedbackRuntimeConfiguration();
List<LdapGroupMapping> ldapGroupMappings = redbackRuntimeConfiguration.getLdapGroupMappings();
if (ldapGroupMappings == null) {
return Collections.emptyMap();
}
Map<String, Collection<String>> res = new HashMap<>(ldapGroupMappings.size());
for (LdapGroupMapping ldapGroupMapping : ldapGroupMappings) {
res.put(ldapGroupMapping.getGroup(), ldapGroupMapping.getRoleNames());
}
return res;
} catch (RepositoryAdminException e) {
throw new MappingException(e.getMessage(), e);
}
}
use of org.apache.archiva.admin.model.beans.LdapGroupMapping in project archiva by apache.
the class ArchivaLdapRoleMapperConfiguration method updateLdapMapping.
@Override
public void updateLdapMapping(String ldapGroup, List<String> roles) throws MappingException {
try {
RedbackRuntimeConfiguration redbackRuntimeConfiguration = redbackRuntimeConfigurationAdmin.getRedbackRuntimeConfiguration();
LdapGroupMapping ldapGroupMapping = new LdapGroupMapping(ldapGroup);
int idx = redbackRuntimeConfiguration.getLdapGroupMappings().indexOf(ldapGroupMapping);
if (idx > -1) {
logger.debug("updateLdapMapping ldapGroup: {}, roles: {}", ldapGroup, roles);
ldapGroupMapping = redbackRuntimeConfiguration.getLdapGroupMappings().get(idx);
ldapGroupMapping.setRoleNames(roles);
}
redbackRuntimeConfigurationAdmin.updateRedbackRuntimeConfiguration(redbackRuntimeConfiguration);
} catch (RepositoryAdminException e) {
throw new MappingException(e.getMessage(), e);
}
}
Aggregations