KEYCLOAK: секрет клиента не указан в запросе

версия keycloak js -> ^ 10.0.2

угловой -> ^ 7.2.16

keycloak.json

{
  "realm": "REALM",
  "auth-server-url": "<auth-url>/auth/",
  "ssl-required": "external",
  "resource": "CLIENT_ID",
  "verify-token-audience": true,
  "credentials": {
    "secret": "CLIENT_SECRET_KEY"
  },
  "use-resource-role-mappings": true,
  "confidential-port": 0,
  "policy-enforcer": {}
}

используя в init как это

const keycloakAuth = Keycloak('keycloak.json');
keycloakAuth.init({ onLoad: 'login-required', checkLoginIframe: false })

когда keycloak сделал этот вызов <auth-url>/auth/realms/guavus/protocol/openid-connect/token, чем выдал эту ошибку.

{"error": "unauthorized_client", "error_description": "Секрет клиента не указан в запросе"}

согласно документации удалена поддержка учетных данных из адаптера javascript

чем это альтернатива и как исправить эту ошибку?


person avantika    schedule 10.06.2020    source источник
comment
Вы можете получить токен от почтальона?   -  person Subodh Joshi    schedule 10.06.2020
comment
Скорее всего, это какое-то приложение на Javascript. Это одностраничное приложение (например, Angular, React) или серверное приложение (nodejs и т. Д.)?   -  person Codo    schedule 10.06.2020


Ответы (2)


Если это Angular одностраничное приложение (SPA), вы должны использовать общедоступный клиент (который не будет использовать секрет клиента) согласно документации Keycloak:

«При использовании клиентских приложений важно отметить, что клиент должен быть общедоступным, поскольку нет безопасного способа хранить учетные данные клиента в клиентском приложении». https://www.keycloak.org/docs/latest/securing_apps/#_javascript_adapter < / а>

person Dino    schedule 10.06.2020

Да, я узнал, что они убрали credential поддержку из адаптера javascript.

https://www.keycloak.org/docs/latest/release_notes/#credentials-support-removed-from-the-javascript-adapter https://github.com/keycloak/keycloak/commit/913056b2b2d39707347a39dddb7bdad69fe47cc3

а для адаптера javascript они упоминали в документе To use the JavaScript adapter you must first create a client for your application in the Keycloak Administration Console. Make sure public is selected for Access Type.

person avantika    schedule 11.06.2020
comment
Спасибо. Мой клиент сначала был настроен на конфиденциальность ... общественные работы! - person raujonas; 13.01.2021
comment
Итак, как мы можем проверить, какие права доступа к ресурсам есть у пользователя в keycloak, если нам нужно использовать общедоступный клиент? поскольку общедоступные клиенты не поддерживают ресурсы авторизации keycloak. - person PrestonDocks; 15.07.2021