def partial_export(self, export_clients=False,
                    export_groups_and_roles=False):
     params_path = {"realm-name": self.realm_name}
     params = {"exportClients": export_clients, "exportGroupsAndRoles":
               export_groups_and_roles}
     data_raw = self.connection.raw_post(
         URL_PARTIAL_EXPORT.format(**params_path), data=json.dumps(params))
     return raise_error_from_response(data_raw, KeycloakGetError,
                                      expected_code=200)
Exemplo n.º 2
0
def get_service_accounts(keycloak_admin, namespace):
    params_path = {"realm-name": keycloak_admin.realm_name}
    data_raw = keycloak_admin.raw_get(URL_ADMIN_CLIENTS.format(**params_path),
                                      clientId='sa-%s-' % namespace,
                                      search=True)
    response = raise_error_from_response(data_raw, KeycloakGetError)
    result = []
    for r in response:
        if client_id_valid(namespace, r['clientId']):
            result.append({"clientId": r['clientId'], "enabled": r['enabled']})
    return result
def exchange_token( oidc_obj, token):
    """
    """
    params_path = {"realm-name": oidc_obj.realm_name}
    payload = {"client_id": oidc_obj.client_id, 
            "grant_type": 'urn:ietf:params:oauth:grant-type:token-exchange',
            "subject_token":token,
            "subject_issuer":"lhcr2oidc"}

    payload = oidc_obj._add_secret_key(payload)
    data_raw = oidc_obj.connection.raw_post(URL_TOKEN.format(**params_path),
                                        data=payload)
    return raise_error_from_response(data_raw, KeycloakGetError)
Exemplo n.º 4
0
def list_service_accounts(namespace: str) -> object:
    enforce_authorization(namespace)

    keycloak_admin = admin_api()

    try:
        params_path = {"realm-name": keycloak_admin.realm_name}
        data_raw = keycloak_admin.raw_get(
            URL_ADMIN_CLIENTS.format(**params_path),
            clientId='sa-%s-' % namespace,
            search=True)
        response = raise_error_from_response(data_raw, KeycloakGetError)
        result = []
        for r in response:
            result.append(r['clientId'])
        return (json.dumps(result), 200)
    except KeycloakGetError as err:
        log.error(err)
        abort(
            make_response(jsonify(error="Failed to read service accounts"),
                          400))
 def partial_import(self, rep):
     params_path = {"realm-name": self.realm_name}
     data_raw = self.connection.raw_post(
         URL_PARTIAL_IMPORT.format(**params_path), data=json.dumps(rep))
     return raise_error_from_response(data_raw, KeycloakGetError,
                                      expected_code=500)