authentication - 如何使用 Keycloak 保护前端和其余 API

标签 authentication keycloak keycloak-services keycloak-rest-api keycloak-connect

我对 Keycloak 服务器非常陌生,并想用它来保护我的前端应用程序和后端 rest API,这些 API 也在互联网上开放。到目前为止,我所理解和所做的是在 Keycloack 上创建 2 个客户端,1 个用于前端,该前端使用具有访问类型(公共(public))的客户端协议(protocol)(openid-connect),然后在客户端我使用采用者将用户重定向到 Keycloak 登录页面并进行身份验证并获取 token 。现在对于后端(rest-apis),我创建了一个单独的客户端,它再次使用客户端协议(protocol)(openid-connect)但具有访问类型( secret )和身份验证流程:浏览器流程和直接授权流程都是直​​接授权,之后我得到客户端 ID 和客户端 secret 来调用 Keycloak rest api。
现在我希望当用户从前端进行身份验证并获取 token 并将 header 请求发送到我的 rest API 时,在这里我调用一些 Keycloak rest api 通过提供 client_id 和 client_secret 来验证此 token 。
我正在使用 Keycloak 的以下 rest api 来验证我在前端生成的 token :

http://localhost:8120/auth/realms/evva_realm/protocol/openid-connect/token/introspect
但结果是这样的:
{
    "active": false
}
我可能使用了一些错误的 api 或整个架构来验证和保护我的后端 api 不正确。有人可以帮助我了解问题出在哪里吗?

最佳答案

@ user565 我发现这篇中等文章对我有用。我相信你也可以从中受益。
它基本上创建了两个客户端,一个用于后端,另一个用于前端。问题在于它们通过利用客户端范围、角色和复合角色功能共享相同的角色。
希望有帮助:https://medium.com/devops-dudes/secure-front-end-react-js-and-back-end-node-js-express-rest-api-with-keycloak-daf159f0a94e

关于authentication - 如何使用 Keycloak 保护前端和其余 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65009654/

相关文章:

authentication - 对 LDAP 进行身份验证时 Hook Windows 身份验证以获取凭据

django - 测试 Django 1-5 重置密码表单 - 如何生成测试 token ?

java - 当(用户 ->更新,删除)从Keycloak时如何将事件发送到我的服务器?

spring-security - 如何使用 spring security [自定义登录页面] 完成 keycloak 用户更新密码所需的操作

java - 如何使用 keycloak Rest api 为用户获取更多/可选数据?

spring-boot - 在 key 斗篷中基于SMS的OTP可能吗?

c# - 你如何在 servicestack.net 中实现身份验证

angular - 延迟加载的子路由在 Angular 中加载两次

node.js - 如何在 keycloak 中验证 token 并获取用户详细信息?

javascript - 如何检查用户是否已在 AWS Amplify 中确认?