Class OIDCRestService


  • @Service
    public class OIDCRestService
    extends Object
    • Constructor Detail

      • OIDCRestService

        public OIDCRestService​(@Value("${ca3s.oidc.roles.user:USER}")
                               String[] rolesUserArr,
                               @Value("${ca3s.oidc.roles.domainra:DOMAIN_RA}")
                               String[] rolesDomainRAArr,
                               @Value("${ca3s.oidc.roles.ra:RA}")
                               String[] rolesRAArr,
                               @Value("${ca3s.oidc.roles.admin:ADMIN}")
                               String[] rolesAdminArr,
                               @Value("${ca3s.oidc.client-id:#{null}}")
                               String clientId,
                               @Value("${ca3s.oidc.client-secret:clientSecret}")
                               String clientSecret,
                               @Value("${ca3s.ui.languages:en,de,pl}")
                               String availableLanguages,
                               UserPreferenceRepository userPreferenceRepository,
                               UserRepository userRepository,
                               AuthorityRepository authorityRepository,
                               org.springframework.security.crypto.password.PasswordEncoder passwordEncoder)
    • Method Detail

      • exchangeCodeToToken

        public String exchangeCodeToToken​(String keycloakTokenUri,
                                          String authCode,
                                          String redirectUri)
                                   throws com.fasterxml.jackson.core.JsonProcessingException,
                                          UnsupportedEncodingException
        login by using username and password to oidc, and capturing token on response body
        Parameters:
        username -
        password -
        Returns:
        public KeycloakUserId login(String keycloakTokenUri, String username, String password) throws JsonProcessingException { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); MultiValueMap map = new LinkedMultiValueMap<>(); map.add("username",username); map.add("password",password); map.add("client_id",clientId); map.add("grant_type",grantType); map.add("client_secret",clientSecret); map.add("scope",scope); LOG.info("map: {}", map); RestTemplate restTemplate = new RestTemplate(); HttpEntity> request = new HttpEntity<>(map, headers); String userId = restTemplate.postForObject(keycloakTokenUri, request, String.class); LOG.info("userId: {}", userId); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); return objectMapper.readValue(userId, KeycloakUserId.class); }
        Throws:
        com.fasterxml.jackson.core.JsonProcessingException
        UnsupportedEncodingException
      • getUserInfo

        @Transactional
        public KeycloakUserDetails getUserInfo​(String keycloakUserInfoUrl,
                                               String token)
                                        throws com.fasterxml.jackson.core.JsonProcessingException
        Throws:
        com.fasterxml.jackson.core.JsonProcessingException
      • getUserInfo

        @Transactional
        public KeycloakUserDetails getUserInfo​(org.keycloak.representations.AccessToken token)
      • getAuthorities

        public Set<org.springframework.security.core.GrantedAuthority> getAuthorities​(KeycloakUserDetails keycloakUserDetails)