从 URL 加载 Keycloak 配置

Wen*_*uen 1 javascript jboss-tools keycloak

Keycloak 3.2的JavaScript适配器文档说,你可以用实例化对象keycloak:

var keycloak = Keycloak('http://localhost:8080/myapp/keycloak.json'));
Run Code Online (Sandbox Code Playgroud)

但是当我尝试这样做时,看起来我的 keycloak.config 文件没有正确设置,因为我最终得到:

Uncaught TypeError: Cannot read property 'charAt' of undefined
  at getRealmUrl (keycloak.js:482)
  at Keycloak.kc.createLoginUrl (keycloak.js:233)
  at Object.login (keycloak.js:897)
  at Keycloak.kc.login (keycloak.js:205)
  at doLogin (keycloak.js:121)
  at onLoad (keycloak.js:144)
  at Object.processInit [as successCallback] (keycloak.js:187)
  at Object.setSuccess (keycloak.js:771)
  at XMLHttpRequest.req.onreadystatechange (keycloak.js:598)
  at XMLHttpRequest.wrapFn [as __zone_symbol___onreadystatechange] (zone.js:1056)
Run Code Online (Sandbox Code Playgroud)

然而,当我使用http://localhost:8080/myapp/keycloak.json浏览器访问时,我得到:

Uncaught TypeError: Cannot read property 'charAt' of undefined
  at getRealmUrl (keycloak.js:482)
  at Keycloak.kc.createLoginUrl (keycloak.js:233)
  at Object.login (keycloak.js:897)
  at Keycloak.kc.login (keycloak.js:205)
  at doLogin (keycloak.js:121)
  at onLoad (keycloak.js:144)
  at Object.processInit [as successCallback] (keycloak.js:187)
  at Object.setSuccess (keycloak.js:771)
  at XMLHttpRequest.req.onreadystatechange (keycloak.js:598)
  at XMLHttpRequest.wrapFn [as __zone_symbol___onreadystatechange] (zone.js:1056)
Run Code Online (Sandbox Code Playgroud)

如果我用

{
  url: 'http://keycloak-server/auth',
  realm: 'myrealm',
  clientId: 'myapp'
}
Run Code Online (Sandbox Code Playgroud)

一切正常。

这是一个 Keycloak 错误,还是我遗漏了什么?

Wen*_*uen 6

无论您是从其 URL 加载配置还是直接加载到构造函数中,Keycloak 都使用不同的格式...

如果您通过其 URL 加载它,则格式必须为:

{
  auth-server-url: 'http://keycloak-server/auth',
  realm: 'myrealm',
  resource: 'myapp'
}
Run Code Online (Sandbox Code Playgroud)

并不是

{
  url: 'http://keycloak-server/auth',
  realm: 'myrealm',
  clientId: 'myapp'
}
Run Code Online (Sandbox Code Playgroud)