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

com.ef.keycloak.service.keycloakRest.KeycloakRestServiceImpl 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.keycloakRest;

import com.ef.keycloak.config.KeyCloakConfig;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;
import java.util.List;


public class KeycloakRestServiceImpl implements KeycloakRestService {

    private KeyCloakConfig keyCloakConfig;

    public  KeycloakRestServiceImpl(KeyCloakConfig keyCloakConfig){
        this.keyCloakConfig  = keyCloakConfig;
    }

    //Keycloak Authentication API
    @Override
    public ResponseEntity authenticateUser(String userName, String password){

        System.out.println("--------- Configurations--------------");
        System.out.println(keyCloakConfig.toString());
        System.out.println("--------- Configurations--------------");

        String requestURL = keyCloakConfig.getKeycloakAuthServerUrl() + "realms/" + keyCloakConfig.getRealm() + "/protocol/openid-connect/token";

        MultiValueMap map = new LinkedMultiValueMap<>();
        map.add("username",userName);
        map.add("password",password);
        map.add("client_id",keyCloakConfig.getClientId());
        map.add("client_secret",keyCloakConfig.getClientSecret());
        map.add("grant_type",keyCloakConfig.getGrantType());


        System.out.println();
        HttpEntity> request = new HttpEntity<>(map, new HttpHeaders());
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity response = restTemplate.exchange(requestURL,HttpMethod.POST, request, String.class);

        return response;
    }

    //Create User Function
    @Override
    public ResponseEntity createUser(String accessToken){

        String requestURL = keyCloakConfig.getKeycloakAuthServerUrl() + keyCloakConfig.getAdminUsername() +"/realms/" + keyCloakConfig.getRealm() + "/users";

        JSONObject jsonObject = new JSONObject();
        JSONObject credObject = new JSONObject();
        ArrayList credArr = new ArrayList();
        ArrayList userGroup = new ArrayList();

        //User Credentials
        credObject.put("type","password");
        credObject.put("value","123456ABC");
        credObject.put("temporary","false");

        //Add Credentials Object to ArrayList
        credArr.add(credObject);

        //Adding the group to user
        userGroup.add(keyCloakConfig.getUserGroup());

        //User Data
        jsonObject.put("username",keyCloakConfig.getUserName());
        jsonObject.put("enabled","true");
        jsonObject.put("credentials",credArr);
        jsonObject.put("groups",userGroup);

        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type","application/json");
        headers.add("Authorization", "Bearer " + accessToken);

        //Creating parameters for RestTemplate Request
        HttpEntity entity = new HttpEntity(JSONValue.toJSONString(jsonObject), headers);

        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity response = restTemplate.exchange(requestURL, HttpMethod.POST, entity, String.class);

        return response;
    }

    @Override
    public void getUsersByRole(List roles) {
        return;
    }




}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy