Update keycloak implementation and import login-core #1

Merged
k.triantafyllou merged 6 commits from keycloak into master 2023-05-18 13:26:43 +02:00
2 changed files with 36 additions and 2 deletions
Showing only changes of commit b6b8e44659 - Show all commits

View File

@ -2,6 +2,7 @@ package eu.dnetlib.loginservice.security.initiliazers;
import eu.dnetlib.loginservice.properties.Properties;
import eu.dnetlib.loginservice.security.oidc.OpenAIREAuthoritiesMapper;
import eu.dnetlib.loginservice.security.oidc.OpenAIREUserInfoFetcher;
import eu.dnetlib.loginservice.utils.PropertyReader;
import org.mitre.oauth2.model.ClientDetailsEntity;
import org.mitre.oauth2.model.RegisteredClient;
@ -20,17 +21,22 @@ public class Configurations {
private final Properties properties;
private final PropertyReader scopeReader;
private final OpenAIREAuthoritiesMapper authoritiesMapper;
private final OpenAIREUserInfoFetcher userInfoFetcher;
@Autowired
public Configurations(Properties properties, OpenAIREAuthoritiesMapper authoritiesMapper, PropertyReader scopeReader) {
public Configurations(Properties properties, OpenAIREAuthoritiesMapper authoritiesMapper, OpenAIREUserInfoFetcher userInfoFetcher, PropertyReader scopeReader) {
this.properties = properties;
this.scopeReader = scopeReader;
this.authoritiesMapper = authoritiesMapper;
this.userInfoFetcher = userInfoFetcher;
this.scopeReader = scopeReader;
}
@Bean
public OIDCAuthenticationProvider provider() {
OIDCAuthenticationProvider provider = new OIDCAuthenticationProvider();
if(properties.getKeycloak()) {
provider.setUserInfoFetcher(this.userInfoFetcher);
}
if(this.properties.getAuthoritiesMapper() != null && this.scopeReader.getScopes().contains(this.properties.getAuthoritiesMapper())) {
provider.setAuthoritiesMapper(this.authoritiesMapper);
}

View File

@ -0,0 +1,28 @@
package eu.dnetlib.loginservice.security.oidc;
import org.mitre.openid.connect.client.UserInfoFetcher;
import org.mitre.openid.connect.model.PendingOIDCAuthenticationToken;
import org.mitre.openid.connect.model.UserInfo;
import org.springframework.stereotype.Component;
import java.nio.charset.StandardCharsets;
@Component
public class OpenAIREUserInfoFetcher extends UserInfoFetcher {
public OpenAIREUserInfoFetcher() {}
@Override
public UserInfo loadUserInfo(PendingOIDCAuthenticationToken token) {
UserInfo userInfo = super.loadUserInfo(token);
userInfo.setGivenName(encoder(userInfo.getGivenName()));
userInfo.setFamilyName(encoder(userInfo.getFamilyName()));
userInfo.setName(encoder(userInfo.getName()));
return userInfo;
}
private String encoder(String value) {
String decodedString = new String(value.getBytes(StandardCharsets.UTF_8));
return new String(decodedString.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
}
}