Mam mały problem z zarejestrowaniem użytkownika na Keycloak.

Używam keycloak-admin-client:

let keycloakAdminClient = require('keycloak-admin-client');

Gdy klient próbuje utworzyć użytkownika, serwer mówi 403 zabronione.

keycloakAdminClient(clientSettings)
  .then((clients) => {
    console.log('[newRegistration - keycloakAdminClient] init success');
    console.log(clients.token);
    clients.users.create(environment.KEYCLOAK_REALM, newKeycloakUser)
      .then((createdUser) => {
        console.log('[newRegistration - keycloakAdminClient - client.users.create] success - createdUser = ' + createdUser);
        // findNewUserId(newKeycloakUser.username);
        return newKeycloakUser.username;
      })
      .catch((err) => {

        console.log('[newRegistration - keycloakAdminClient - client.users.create] error - code = ', err);
      });
  })
  .catch((err) => {
    console.log('[newRegistration - keycloakAdminClient] init error - code = ', err);
  });
console.log('[newRegistration] END');
};

Oto ustawienia klienta:

 export const environment = {
  production: false,
  KEYCLOAK_URL: 'http://10.10.15.35:8080/auth',
  KEYCLOAK_REALM: 'baulogistik_test',
  KEYCLOAK_CLIENTID: 'angular-frontend',
  BACKEND_URL: 'http://10.10.15.35:8080/api',
  CLIENT_SECRET: '296f7a0f-a0f5-4395-a120-ece8565bbce1'
};

const clientSettings = {
    production: environment.production,
    baseUrl: environment.KEYCLOAK_URL,
    client_id: environment.KEYCLOAK_CLIENTID,
    realmName: environment.KEYCLOAK_REALM,
    grant_type: 'client_credentials',
    client_secret: environment.CLIENT_SECRET
}

Mogę zalogować się do klienta za pomocą tajnego klucza i uzyskać accessToken.

Klient ma rolę administratora.

Role Settings on keycloak

client settings

Czy ktoś ma dla mnie radę? Dzięki!

0
Ha Bardan 15 listopad 2018, 14:21
Witam, witam w przepełnieniu stosu. Czy jesteś pewien, że to klient tworzy użytkownika i nie tworzysz użytkownika przy użyciu tokena aktualnie zalogowanego użytkownika?
 – 
Xtreme Biker
15 listopad 2018, 17:16
Dziękuję Ci. Tak, próbuję utworzyć użytkownika za pomocą tokena dostępu klienta.
 – 
Ha Bardan
16 listopad 2018, 10:05
Spróbuj go utworzyć z jakimś klientem HTTP, takim jak Postman. Jeśli to działa, robisz coś złego po stronie Angulara. Jeśli nie, jest to źle skonfigurowany serwer KC.
 – 
Xtreme Biker
16 listopad 2018, 10:18
Mam ten sam błąd z listonoszem. Serwer kc mógł być źle skonfigurowany.
 – 
Ha Bardan
16 listopad 2018, 12:18

1 odpowiedź

Najlepsza odpowiedź

Mam to. Musisz dodać role z klienta zarządzania obszarami do swojej roli administratora.

enter image description here

Następnie użytkownik musi mieć rolę administratora. Następnie należy rozszerzyć clientSettings w aplikacji Angular:

  • Dodaj nazwę użytkownika i hasło administratora

  • Zmień grant_type na hasło

     const clientSettings = {
     production: environment.production,
     baseUrl: environment.KEYCLOAK_URL,
     client_id: environment.KEYCLOAK_CLIENTID,
     realmName: environment.KEYCLOAK_REALM,
     grant_type: 'password',//'client_credentials',
     username: environment.username,
     password: environment.password,
     client_secret: environment.CLIENT_SECRET
    
0
Reza Mousavi 25 sierpień 2020, 22:42