使用访问令牌访问 Keycloak 管理控制台

Access the Keycloak admin console with an access token

我的应用获得了一个访问令牌,可用于管理 keycloak 资源。

我可以将此标记添加为 header Authorization:Bearer {token} 到 GET-request 到 userinfo-endpoint: {server}/auth/realms/{realm}/protocol/openid-connect/userinfo 并且它工作正常。

但是,如果我将此 header 添加到 GET-request 到 admin-console {server}/auth/admin/{realm}/console/#/realms/{realm},我总是会被重定向到登录页面。

是否可以仅使用 access-token 访问 admin-console?

Keycloak 管理控制台,例如{server}/auth/admin/{realm}/console/#/realms/{realm} 是单页应用程序 (SPA),因此它在浏览器中有自己的“状态”。

页面本身不受保护(例如,任何人都可以通过 curl 加载它 - 它只是一堆 css 和 js 文件)。加载到浏览器的 SPA 应用程序检测到它没有登录状态,因此它初始化自己的登录过程,然后在浏览器中创建登录状态。您不能仅通过访问令牌在浏览器中重新创建 SPA 登录状态。您将需要重新创建所有 cookie、会话变量,也许还有一些内存中的变量,因此在现实世界中这是不可能的。

通常,在这种情况下:访问令牌用于 API 请求,而不是 UI 请求。

Keycloak 有一个管理员 REST API。 https://www.keycloak.org/docs-api/15.0/rest-api/index.html

您可以使用 API 以与管理控制台(位于 {server}/auth/admin/{realm}/console/ 的 javascript 应用程序)相同的方式操作 keycloak .