Add encoder for UTF-8 in case of Keycloak.
This commit is contained in:
parent
2d0bd389e0
commit
b6b8e44659
|
@ -2,6 +2,7 @@ package eu.dnetlib.loginservice.security.initiliazers;
|
||||||
|
|
||||||
import eu.dnetlib.loginservice.properties.Properties;
|
import eu.dnetlib.loginservice.properties.Properties;
|
||||||
import eu.dnetlib.loginservice.security.oidc.OpenAIREAuthoritiesMapper;
|
import eu.dnetlib.loginservice.security.oidc.OpenAIREAuthoritiesMapper;
|
||||||
|
import eu.dnetlib.loginservice.security.oidc.OpenAIREUserInfoFetcher;
|
||||||
import eu.dnetlib.loginservice.utils.PropertyReader;
|
import eu.dnetlib.loginservice.utils.PropertyReader;
|
||||||
import org.mitre.oauth2.model.ClientDetailsEntity;
|
import org.mitre.oauth2.model.ClientDetailsEntity;
|
||||||
import org.mitre.oauth2.model.RegisteredClient;
|
import org.mitre.oauth2.model.RegisteredClient;
|
||||||
|
@ -20,17 +21,22 @@ public class Configurations {
|
||||||
private final Properties properties;
|
private final Properties properties;
|
||||||
private final PropertyReader scopeReader;
|
private final PropertyReader scopeReader;
|
||||||
private final OpenAIREAuthoritiesMapper authoritiesMapper;
|
private final OpenAIREAuthoritiesMapper authoritiesMapper;
|
||||||
|
private final OpenAIREUserInfoFetcher userInfoFetcher;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public Configurations(Properties properties, OpenAIREAuthoritiesMapper authoritiesMapper, PropertyReader scopeReader) {
|
public Configurations(Properties properties, OpenAIREAuthoritiesMapper authoritiesMapper, OpenAIREUserInfoFetcher userInfoFetcher, PropertyReader scopeReader) {
|
||||||
this.properties = properties;
|
this.properties = properties;
|
||||||
this.scopeReader = scopeReader;
|
|
||||||
this.authoritiesMapper = authoritiesMapper;
|
this.authoritiesMapper = authoritiesMapper;
|
||||||
|
this.userInfoFetcher = userInfoFetcher;
|
||||||
|
this.scopeReader = scopeReader;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public OIDCAuthenticationProvider provider() {
|
public OIDCAuthenticationProvider provider() {
|
||||||
OIDCAuthenticationProvider provider = new OIDCAuthenticationProvider();
|
OIDCAuthenticationProvider provider = new OIDCAuthenticationProvider();
|
||||||
|
if(properties.getKeycloak()) {
|
||||||
|
provider.setUserInfoFetcher(this.userInfoFetcher);
|
||||||
|
}
|
||||||
if(this.properties.getAuthoritiesMapper() != null && this.scopeReader.getScopes().contains(this.properties.getAuthoritiesMapper())) {
|
if(this.properties.getAuthoritiesMapper() != null && this.scopeReader.getScopes().contains(this.properties.getAuthoritiesMapper())) {
|
||||||
provider.setAuthoritiesMapper(this.authoritiesMapper);
|
provider.setAuthoritiesMapper(this.authoritiesMapper);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue