问题标签 [keycloak-nodejs-connect]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - Keycloak node.js 适配器不会在注销时使 connect.sid 会话 cookie 无效
根据文档, Node.js keycloak-nodejs-connect适配器(4.3 版)用于保护微服务端点的应用程序网关:
但是,在用户登录/注销流程之后,源自express-session的connect.sid
cookie仍存储在浏览器中。如果其他用户之后通过同一浏览器登录,则会导致意外问题。
如何connect.sid
正确清除 express-session cookie?
通过添加到函数来覆盖适配器的会话存储代码有帮助。但是,它似乎太复杂了:response.clearCookie('connect.sid', { path: '/' });
unstore
一些 keycloak 适配器或 express-session 配置是否更好地实现了目标?
keycloak - Keycloak - 动态注册 URL
我试图实现一种方法来自动有效地管理 keycloak 集群中的数千名用户。我想知道是否有办法让具有更高凭据的用户生成包含 url 参数的注册链接,然后将适当的角色/组分配给访问该链接并创建新帐户的用户?
这可能与开箱即用的钥匙斗篷有关吗?谢谢!
keycloak - 带有“授权码”流程的 Keycloak 自定义登录页面
我们正在尝试将 keycloak 与本机应用程序集成,但使用 keycloak 的登录/注册 oauth2 流程会显示默认登录页面,这不符合我们对材料设计用户屏幕的要求
我看到自定义登录屏幕的选项很少:
- 自定义keycloak提供的主题或者Deploy new theme to JBoss
- 添加一个 nodejs api-server 以与移动应用程序交互并使用
keycloak.grantManager.obtainDirectly
API,但这grantType=password
在keycloak-connect
包中使用 - keycloak-connect有关gainDirectly的 更多信息
第一个选项有点乏味,所以我们实现了第二个选项,但它带有grantType=password
oauth 不推荐的 flow
我想知道keycloak是否有任何解决方案可以使用自定义登录Authorization Code
keycloak - keycloak 为前端和后端提供不同的发行者
我是 keycloak 的新手,我在前端和后端应用程序中都使用 keycloak,但是在 jwt.io 中解码时,我在 keycloak 生成的令牌中得到了不同的颁发者。
前端:
- issuer 与前端应用程序的基本 URL 相同
- 例如:
如果前端 URL 是https://example.org/portal则颁发者与https://example.org/auth相同
通过邮递员请求:
- issuer 是内部 DNS 名称
我尝试了以下方法,
- 代理重定向(使用保留主机) - 使用前端基本 URL 生成发行者。
- 不保留主机的代理重定向 - 期望在前端应用程序解析私有 DNS
- 围绕 keycloak 配置进行游戏 - 将 frontendUrl 更新为https://example.org/auth并将 forceBackendUrlToFrontendUrl 更新为 true ,这导致后端和前端的发行者相同,但没有像 https:/auth/relam/external 这样的主机名(请参阅 #2 in参考)。
预期结果:
- 我需要私有 DNS 作为来自前端和后端的请求的发布者(现在它可以直接后端请求)
提前致谢。
参考
node.js - 撤销 Keycloak 访问令牌
我正在使用 Keycloak 来保护我的 react 前端和 node.js 后端。这些客户端使用基于角色的授权进行保护。
我的前端应用程序在 Keycloak 中注册为公共客户端,后端注册为仅承载客户端。当用户登录到前端时,我正在获取该特定用户的访问令牌,并且我正在使用该访问令牌来调用后端 api 层。
当用户从前端注销时,我正在使用 keycloak 对象注销方法从 Keycloak 清除该特定用户的前端客户端会话。这工作正常,用户正在注销并重定向到 Keycloak 登录页面。
但问题是我仍然可以使用该注销用户的访问令牌来调用后端 api。即使用户注销,访问令牌仍然有效。
我试过这个端点来撤销用户访问令牌。但没有工作/auth/admin/realms//users/
有没有办法撤销 Keycloak 中特定用户的访问令牌?
node.js - Keycloak Nodejs访问被拒绝下载配置
我的 Nodejs-Keycloak 连接有一些问题,即使使用最基本的配置,我也会在身份验证(用户和密码工作,也注册)后拒绝访问。我在 Postman 和浏览器上收到拒绝访问。我遵循了官方指南和这个(Securing Node.js Express REST APIs with Keycloak)以及来自适配器的官方 Github 示例。
我的配置很简单
特快路线:
访问类型:机密
这是我的keycloak.json
我从客户端配置下的安装选项卡下载。
脚步:
- 转到 /secure URL,它会重定向到 keycloak 服务器登录页面
- 插入用户名(电子邮件)和密码并登录
- 被重定向回我的本地主机,但访问被拒绝 403
无论我使用的是机密还是不记名,我都会拒绝访问。我可以通过 Postman/curl 进行身份验证并获取令牌(持有者),还可以重定向到 Keycloack 登录页面并插入凭据,但我被拒绝访问。
在我的开发服务器控制台上,我得到这个:无法获得授权代码:错误:授权验证失败。原因:无效令牌(错误的受众)
keycloak - 无法在 keycloak 和 Gatekeeper 之间进行通信
我完全是 key-cloak 和 keycloak-gatekeeper 的新手我在我的机器上运行 keycloak,地址为 localhost:8080,因为我的网守在 minikube 环境中运行以下是我的配置和部署文件
我的配置文件如下:
我已经在 discovery-url 参数中设置了 localhost 路径。
因此,通过上述配置,我无法与 keycloak 进行通信。请提供有关此行为的一些指导。非常感谢任何形式的帮助。
keycloak - Keycloak - 请求用户通过 api 验证电子邮件地址
期望的结果:
用户应该能够注册,然后他应该能够通过移动应用程序登录(如果电子邮件地址未验证),应用程序会显示电子邮件未验证的警告,并且某些应用程序功能已禁用
我有什么:
- 具有用户注册和登录功能的原生移动应用
- 应用程序使用的 api 服务器
- 密钥锁实例
注册功能由api 服务器完成,它是一个 keycloak 机密客户端,可以创建用户
登录由移动应用程序/token
直接通过对返回访问令牌的 keycloak 端点的后调用完成
一切都好,现在我有一个可以由我的 api 服务器使用的令牌,我知道它是一个注册用户,其电子邮件地址未经确认
问题是用户没有收到任何欢迎/确认电子邮件,但是:如果用户转到 keycloak 登录网页并尝试使用新创建的用户登录,那么他会收到来自 Keycloak 的电子邮件,但对于通过 api 登录的电子邮件没有电子邮件。有什么办法可以解决这个问题吗?难道我做错了什么?
请求用户验证电子邮件的唯一方法是请求“验证电子邮件”操作,但如果我这样做,那么用户将无法再使用未经验证的电子邮件登录
POST
使用to/auth/realms/realm/protocol/openid-connect/token
和{grant_type: 'password', password: 'string', username: 'string'}
body完成登录
呼叫PUT /{realm}/users/{id}/send-verify-email
的行为似乎与请求Verify Email
相同/execute-actions-email
node.js - 在 express 应用程序中实现 keycloak 连接
我使用 Keycloak 服务器进行授权(微服务)。
我克隆了这个项目https://github.com/w3tecch/express-typescript-boilerplate/tree/master
在我的快速项目中,我正在使用keycloak-connect
(keycloak 适配器)库
我想在我的新 express-nodejs 项目中实现下面的代码。
参考:https://github.com/keycloak/keycloak-quickstarts/blob/latest/service-nodejs/app.js
我正在使用routing-controllers
库进行快递。我不知道如何keycloak.protect()
在这个项目中使用。有什么建议么?
到目前为止,我设法做到了(我不确定这是否是正确的方法):
授权检查器.ts
@Authorized()
而不是我在控制器中使用注释:
我使用邮递员来测试api。我能够获得令牌,并且在出现身份验证错误之前我可以在我的 api 上发出一些请求。未设置令牌的过期时间。