All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ef.keycloak.service.FinesseService.FinesseServiceImpl Maven / Gradle / Ivy

Go to download

This dependency contains the spring keycloak adapter for expert flow's CIM project

The newest version!
package com.ef.keycloak.service.FinesseService;

import com.ef.keycloak.config.KeyCloakConfig;
import com.ef.keycloak.service.keycloakRest.KeycloakRestServiceImpl;
import com.google.gson.Gson;
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;

import java.util.Arrays;
import java.util.Base64;
import java.util.Properties;

public class FinesseServiceImpl extends KeycloakRestServiceImpl implements FinesseService {

    KeyCloakConfig keyCloakConfig;

    public FinesseServiceImpl(KeyCloakConfig keyCloakConfig) {
        super(keyCloakConfig);
        this.keyCloakConfig = keyCloakConfig;
    }


    //Authenticate Or Save User in Keycloak
    @Override
    public ResponseEntity AuthenticateOrSaveUser() {

        //Send Auth Credentials to finesse for authentication
        HttpStatus statusCode = finesseUserAuthentication();
        boolean authenticated = false;

        ResponseEntity authResult = null;

        if(statusCode.value() == HttpStatus.OK.value()){

            try{
                //Calling keycloak Auth API to authenticate credentials
                authResult = authenticateUser(keyCloakConfig.getUserName(), "123456ABC");
                authenticated = true;

            }catch (Exception ignore){

                System.out.println("**Exception: "+ ignore);

            }
            finally {

                try{

                    if(!authenticated){

                        //Calling keycloak Auth API to authenticate credentials
                        ResponseEntity keycloakAuthenticateUser = authenticateUser(keyCloakConfig.getAdminUsername(), keyCloakConfig.getAdminPassword());
                        Gson gson = new Gson();
                        Properties data = gson.fromJson(keycloakAuthenticateUser.getBody(), Properties.class);

                        System.out.println(data.getProperty("access_token"));

                        ResponseEntity addUser = createUser(data.getProperty("access_token"));
                        HttpStatus userAddStatus = addUser.getStatusCode();

                        if(userAddStatus.value() == HttpStatus.CREATED.value()){
                            authResult = authenticateUser(keyCloakConfig.getUserName(), "123456ABC");
                        }
                    }

                }catch(Exception e){

                    System.out.println("**Exception** "+e);

                }


            }

        }

        return authResult;
    }


    //Finesse Auth API.
    @Override
    public HttpStatus finesseUserAuthentication(){

        //Mask the credentials
        String uri = String.format("%s/finesse/api/User/%s",keyCloakConfig.getFinesseBaseUrl(),keyCloakConfig.getUserName());

        try {

            HttpHeaders headers = maskCredentials();
            headers.setAccept(Arrays.asList(MediaType.APPLICATION_XML));

            //Creating parameters for RestTemplate Request
            HttpEntity entity = new HttpEntity("parameters", headers);

            RestTemplate restTemplate = new RestTemplate();
            ResponseEntity response = restTemplate.exchange(uri, HttpMethod.GET, entity, String.class);
            HttpStatus statusCode = response.getStatusCode();

            return statusCode;
        }
        catch (Exception e) {

            System.out.println("** Exception: "+ e.getMessage());
            return HttpStatus.UNAUTHORIZED;

        }

    }


    //Function to mask credentials and create a auth header of it.
    @Override
    public HttpHeaders maskCredentials()
    {
        String credential = keyCloakConfig.getUserName() + ":" + keyCloakConfig.getPassword();
        String encodedAuth= Base64.getEncoder().encodeToString(credential.getBytes());
        HttpHeaders headers = new HttpHeaders();
        //headers.setContentType(MediaType.APPLICATION_JSON);
        headers.add("Authorization", "Basic " + encodedAuth);
        return headers;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy