KEYCLOAK:请求中未提供客户端密码

时间:2020-06-10 07:59:18

标签: keycloak keycloak-services

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时,给出的错误大于。

{“错误”:“ unauthorized_client”,“错误描述”:“请求中未提供客户端密码”}

documentation已从javascript适配器中删除了凭据支持

这有什么替代方法,以及如何解决此错误?

2 个答案:

答案 0 :(得分:0)

如果这是Angular单页应用程序(SPA),则应根据Keycloak文档使用公共客户端(不使用客户端密钥):

“使用客户端应用程序时要注意的一件事是,客户端必须是公共客户端,因为没有安全的方法可以将客户端凭据存储在客户端应用程序中。” https://www.keycloak.org/docs/latest/securing_apps/#_javascript_adapter

答案 1 :(得分:0)

是的,我知道他们从JavaScript适配器中删除了credential支持

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.