如何使用 Keycloak 保护前端和 REST API

use*_*565 9 authentication keycloak keycloak-services keycloak-connect keycloak-rest-api

我对 Keycloak 服务器非常陌生,想用它来保护我的前端应用程序和后端 REST API,它们也通过互联网开放。到目前为止,我理解和所做的是在 Keycloack 上创建 2 个客户端,1 个用于使用客户端协议(openid-connect)和访问类型(公共)的前端,然后在客户端我使用采用者将用户重定向到 Keycloak 登录页面并进行身份验证并获取令牌。现在,对于后端(rest-apis),我创建了一个单独的客户端,它再次使用客户端协议(openid-connect),但具有访问类型(机密)并且在身份验证流程中:浏览器流和直接授予流都是直接授予,然后我得到客户端 ID 和客户端秘密来调用 Keycloak Rest api。

现在我希望当用户从前端进行身份验证并获取令牌并将标头请求发送到我的其余 API 时,我在这里调用一些 Keycloak 其余 api 通过提供 client_id 和 client_secret 来验证此令牌。

我正在使用 Keycloak 中的以下 REST API 来验证我在前端生成的令牌:

http://localhost:8120/auth/realms/evva_realm/protocol/openid-connect/token/introspect
Run Code Online (Sandbox Code Playgroud)

但结果是这样的:

{
    "active": false
}
Run Code Online (Sandbox Code Playgroud)

我可能使用了一些错误的 api 或整个架构来验证和保护我的后端 api 不正确。有人可以帮助我了解问题出在哪里吗?

rde*_*ais 6

@user565 我发现这篇中等帖子适合我。我相信您也能从中受益。

它基本上创建了两个客户端,一个用于后端,另一个用于前端。问题在于,它们通过利用客户端范围、角色和复合角色功能来共享相同的角色。

希望有帮助:https://medium.com/devops-dudes/secure-front-end-react-js-and-back-end-node-js-express-rest-api-with-keycloak-daf159f0a94e