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.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);
|
||||
}
|
||||
|
|
|
@ -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