use of io.gravitee.rest.api.security.authentication.AuthenticationProvider in project gravitee-management-rest-api by gravitee-io.
the class BasicSecurityConfigurerAdapter method configure.
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
LOGGER.info("--------------------------------------------------------------");
LOGGER.info("Portal API BasicSecurity Config");
LOGGER.info("Loading authentication identity providers for Basic authentication");
List<io.gravitee.rest.api.security.authentication.AuthenticationProvider> providers = authenticationProviderManager.getIdentityProviders().stream().filter(authenticationProvider -> !authenticationProvider.external()).collect(Collectors.toList());
for (AuthenticationProvider provider : providers) {
String providerType = provider.type();
LOGGER.info("Loading authentication provider of type {} at position {}", providerType, provider.index());
Collection<IdentityProvider> identityProviders = identityProviderManager.getAll();
if (identityProviders != null) {
Optional<io.gravitee.rest.api.idp.api.authentication.AuthenticationProvider> authenticationProviderPlugin = identityProviders.stream().filter(ip -> ip.type().equalsIgnoreCase(providerType)).map(ip -> identityProviderManager.loadIdentityProvider(ip.type(), provider.configuration())).filter(Objects::nonNull).findFirst();
if (authenticationProviderPlugin.isPresent()) {
Object authenticationProvider = authenticationProviderPlugin.get().configure();
if (authenticationProvider instanceof org.springframework.security.authentication.AuthenticationProvider) {
auth.authenticationProvider((org.springframework.security.authentication.AuthenticationProvider) authenticationProvider);
} else if (authenticationProvider instanceof SecurityConfigurer) {
auth.apply((SecurityConfigurer) authenticationProvider);
}
} else {
LOGGER.error("No authentication provider found for type: {}", providerType);
}
}
}
LOGGER.info("--------------------------------------------------------------");
}
Aggregations