
com.ef.keycloak.service.FinesseService.FinesseServiceImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ef-keycloak-adapter Show documentation
Show all versions of ef-keycloak-adapter Show documentation
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