5

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

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

我正在使用来自 Keycloak 的以下 api 来验证我在前端生成的令牌:

http://localhost:8120/auth/realms/evva_realm/protocol/openid-connect/token/introspect

但结果是这样的:

{
    "active": false
}

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

4

1 回答 1

5

@user565 我发现这篇中等帖子对我有用。我相信你也可以从中受益。

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

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

于 2021-04-07T00:56:11.070 回答