Class KeycloakTool


  • public class KeycloakTool
    extends java.lang.Object
    Keycloack API toolbox
    see https://www.keycloak.org/
    • Constructor Summary

      Constructors 
      Constructor Description
      KeycloakTool()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void clearCache()
      Remove static data from memory
      static KeycloakTool.KeycloakAPI getAPI​(java.lang.String provider)
      Get the KEYCLOAK_API
      static org.json.JSONObject getAPIParameters()
      Get KEYCLOAK_API parameters
      static org.json.JSONObject getAPIParameters​(java.lang.String provider)
      Get the KEYCLOAK_API parameters { url, service_root, realm, client_id, client_secret, username, password, debug }
      static org.json.JSONObject getClient​(java.lang.String client)
      Search a client of default keycloak API
      static org.json.JSONArray getClientRoleUsers​(java.lang.String client, java.lang.String role, int max)
      List users with a client role of default keycloak API
      static org.json.JSONArray getClients()
      List all clients of default keycloak API
      static org.json.JSONObject getGroup​(java.lang.String group)
      Search a group of default keycloak API
      static org.json.JSONArray getGroupUsers​(java.lang.String group, int max)
      List users with a given group of default keycloak API
      static java.lang.String getToken()
      Get token of default keycloak API
      static KeycloakTool.KeycloakUser getUser​(java.lang.String login)
      Get all user information (attributes and groups) from default keycloak provider
      static KeycloakTool.KeycloakUser getUser​(java.lang.String login, java.lang.String provider)
      Get all user information (attributes and groups)
      static java.util.List<java.lang.String> getUserClientRoles​(java.lang.String userUID)
      List the user's roles within all clients of default keycloak API
      static java.util.List<java.lang.String> getUserClientRoles​(java.lang.String userUID, java.lang.String clientUID)
      List the user's roles within a client role-mappings of default keycloak API
      static java.util.List<java.lang.String> getUserGroups​(java.lang.String userUID, int max)
      List the user's groups of default keycloak API
      static org.json.JSONObject getUserInfo​(java.lang.String login)
      Get user info of default keycloak API { id, enabled, username, email, firstName, lastName, attributes:{ key:[values]...
      static java.util.List<java.lang.String> getUserRealmRoles​(java.lang.String userUID)
      List the user's roles on realm role-mappings of default keycloak API
      static boolean includeGroup​(java.lang.String name)
      Is the group/role to include into import
      static void logout​(SessionInfo info)
      Logout a session
      static org.json.JSONArray searchUsers​(java.lang.String filter, int max)
      User search of default keycloak API
      static void setDebug​(boolean b)
      Set the debug mode of default keycloak API
      static void setUserByAPI​(java.lang.String login, SessionInfo info, boolean groups, boolean realmRoles, boolean clientRoles)
      Set the session info with Keycloak user using API
      static void setUserByLogon​(java.lang.String login, SessionInfo info)
      Set the session info with Keycloak user
      static java.lang.String sync​(ObjectDB obj)
      Synchronize users with all declared KEYCLOACK_API
      static void syncClient​(org.json.JSONObject params, java.lang.String client, ObjectDB obj)
      Import users from a Keycloak client roles
      static java.lang.String syncClients​(org.json.JSONObject params, org.json.JSONArray clients, ObjectDB obj)
      Import users from KEYCLOAK_SYNC.clients
      static void syncGroup​(org.json.JSONObject params, java.lang.String group, ObjectDB obj)
      Import users from a Keycloak group
      static java.lang.String syncGroups​(org.json.JSONObject params, org.json.JSONArray groups, ObjectDB obj)
      Import users from KEYCLOAK_SYNC.groups
      static void syncRole​(org.json.JSONObject params, java.lang.String role, ObjectDB obj)
      Import users from a Keycloak role
      static java.lang.String syncRoles​(org.json.JSONObject params, org.json.JSONArray roles, ObjectDB obj)
      Import users from KEYCLOAK_SYNC.roles
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • KeycloakTool

        public KeycloakTool()
    • Method Detail

      • getAPI

        public static KeycloakTool.KeycloakAPI getAPI​(java.lang.String provider)
        Get the KEYCLOAK_API
        Parameters:
        provider - Optional provider name (default is "keycloak")
      • getAPIParameters

        public static org.json.JSONObject getAPIParameters()
        Get KEYCLOAK_API parameters
        Returns:
        JSON
      • getAPIParameters

        public static org.json.JSONObject getAPIParameters​(java.lang.String provider)
        Get the KEYCLOAK_API parameters { url, service_root, realm, client_id, client_secret, username, password, debug }
        Parameters:
        provider - Optional provider (default is "keycloak")
        Returns:
        JSON object
      • clearCache

        public static void clearCache()
        Remove static data from memory
      • setDebug

        public static void setDebug​(boolean b)
        Set the debug mode of default keycloak API
      • getToken

        public static java.lang.String getToken()
        Get token of default keycloak API
      • logout

        public static void logout​(SessionInfo info)
        Logout a session
        Parameters:
        info - Session info with access_token to invalidate
      • getClientRoleUsers

        public static org.json.JSONArray getClientRoleUsers​(java.lang.String client,
                                                            java.lang.String role,
                                                            int max)
        List users with a client role of default keycloak API
        Parameters:
        client - Client name
        role - Role name
        max - Max result size
        Returns:
        Array of Keycloak users
      • getGroup

        public static org.json.JSONObject getGroup​(java.lang.String group)
        Search a group of default keycloak API
        Parameters:
        group - Group name
        Returns:
        Keycloak group
      • getClient

        public static org.json.JSONObject getClient​(java.lang.String client)
        Search a client of default keycloak API
        Parameters:
        client - Client name
        Returns:
        Keycloak client
      • getClients

        public static org.json.JSONArray getClients()
        List all clients of default keycloak API
        Returns:
        Keycloak clients
      • getGroupUsers

        public static org.json.JSONArray getGroupUsers​(java.lang.String group,
                                                       int max)
        List users with a given group of default keycloak API
        Parameters:
        group - Group name
        max - Max result size
        Returns:
        Array of Keycloak users
      • searchUsers

        public static org.json.JSONArray searchUsers​(java.lang.String filter,
                                                     int max)
        User search of default keycloak API
        Parameters:
        filter - A String contained in username, first or last name, or email
        max - Max result size
        Returns:
        Array of Keycloak users
      • getUserInfo

        public static org.json.JSONObject getUserInfo​(java.lang.String login)
        Get user info of default keycloak API { id, enabled, username, email, firstName, lastName, attributes:{ key:[values]... }, ... }
        Parameters:
        login -
        Returns:
        JSON object
      • getUserRealmRoles

        public static java.util.List<java.lang.String> getUserRealmRoles​(java.lang.String userUID)
        List the user's roles on realm role-mappings of default keycloak API
        Parameters:
        userUID - User keycloak Id
        Returns:
        List of granted roles
      • getUserClientRoles

        public static java.util.List<java.lang.String> getUserClientRoles​(java.lang.String userUID,
                                                                          java.lang.String clientUID)
        List the user's roles within a client role-mappings of default keycloak API
        Parameters:
        userUID - User keycloak Id of default keycloak API
        clientUID - Client keycloak Id
        Returns:
        List of granted roles or null
      • getUserClientRoles

        public static java.util.List<java.lang.String> getUserClientRoles​(java.lang.String userUID)
        List the user's roles within all clients of default keycloak API
        Parameters:
        userUID - User keycloak Id
        Returns:
        List of granted roles or null
      • getUserGroups

        public static java.util.List<java.lang.String> getUserGroups​(java.lang.String userUID,
                                                                     int max)
        List the user's groups of default keycloak API
        Parameters:
        userUID - User keycloak Id
        max - Max size of result
        Returns:
        List of granted groups
      • getUser

        public static KeycloakTool.KeycloakUser getUser​(java.lang.String login)
        Get all user information (attributes and groups) from default keycloak provider
        Parameters:
        login - User login
        Returns:
        Keycloak user
      • getUser

        public static KeycloakTool.KeycloakUser getUser​(java.lang.String login,
                                                        java.lang.String provider)
        Get all user information (attributes and groups)
        Parameters:
        login - User login
        provider - keycloak provider name
        Returns:
        Keycloak user
      • setUserByLogon

        public static void setUserByLogon​(java.lang.String login,
                                          SessionInfo info)
        Set the session info with Keycloak user
        Parameters:
        login - Login of user
        info - Session info to load
      • setUserByAPI

        public static void setUserByAPI​(java.lang.String login,
                                        SessionInfo info,
                                        boolean groups,
                                        boolean realmRoles,
                                        boolean clientRoles)
        Set the session info with Keycloak user using API
        Parameters:
        login - Login of user
        info - Session info to load
        groups - Import Keycloak groups as local groups?
        realmRoles - Import Keycloak realm roles as local groups?
        clientRoles - Import Keycloak client roles as local groups?
      • syncGroups

        public static java.lang.String syncGroups​(org.json.JSONObject params,
                                                  org.json.JSONArray groups,
                                                  ObjectDB obj)
        Import users from KEYCLOAK_SYNC.groups
        Parameters:
        params - Sync parameters
        groups - List of Keycloak group names
        obj - optional caller object (to stop asynchronous action)
      • syncRoles

        public static java.lang.String syncRoles​(org.json.JSONObject params,
                                                 org.json.JSONArray roles,
                                                 ObjectDB obj)
        Import users from KEYCLOAK_SYNC.roles
        Parameters:
        params - Sync parameters
        roles - List of Keycloak role names
        obj - optional caller object (to stop asynchronous action)
      • syncClients

        public static java.lang.String syncClients​(org.json.JSONObject params,
                                                   org.json.JSONArray clients,
                                                   ObjectDB obj)
        Import users from KEYCLOAK_SYNC.clients
        Parameters:
        params - Sync parameters
        clients - List of Keycloak client names
        obj - optional caller object (to stop asynchronous action)
      • syncGroup

        public static void syncGroup​(org.json.JSONObject params,
                                     java.lang.String group,
                                     ObjectDB obj)
        Import users from a Keycloak group
        Parameters:
        params - Sync parameters
        group - Keycloak group name
        obj - optional caller object (to stop asynchronous action)
      • syncRole

        public static void syncRole​(org.json.JSONObject params,
                                    java.lang.String role,
                                    ObjectDB obj)
        Import users from a Keycloak role
        Parameters:
        params - Sync parameters
        role - Keycloak role name
        obj - optional caller object (to stop asynchronous action)
      • syncClient

        public static void syncClient​(org.json.JSONObject params,
                                      java.lang.String client,
                                      ObjectDB obj)
        Import users from a Keycloak client roles
        Parameters:
        params - Sync parameters
        client - Keycloak client name
        obj - optional caller object (to stop asynchronous action)
      • includeGroup

        public static boolean includeGroup​(java.lang.String name)
        Is the group/role to include into import
        Parameters:
        name - Group or role name
        Returns:
        true if name belongs to USER_SYNC_GROUPS_INCLUDE
      • sync

        public static java.lang.String sync​(ObjectDB obj)
        Synchronize users with all declared KEYCLOACK_API
        Parameters:
        obj - Optional caller object
        Returns:
        Message