问题标签 [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.

0 投票
1 回答
867 浏览

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 配置是否更好地实现了目标?

0 投票
0 回答
135 浏览

keycloak - Keycloak - 动态注册 URL

我试图实现一种方法来自动有效地管理 keycloak 集群中的数千名用户。我想知道是否有办法让具有更高凭据的用户生成包含 url 参数的注册链接,然后将适当的角色/组分配给访问该链接并创建新帐户的用户?

这可能与开箱即用的钥匙斗篷有关吗?谢谢!

0 投票
0 回答
1146 浏览

keycloak - 带有“授权码”流程的 Keycloak 自定义登录页面

我们正在尝试将 keycloak 与本机应用程序集成,但使用 keycloak 的登录/注册 oauth2 流程会显示默认登录页面,这不符合我们对材料设计用户屏幕的要求

我看到自定义登录屏幕的选项很少:

  1. 自定义keycloak提供的主题或者Deploy new theme to JBoss
  2. 添加一个 nodejs api-server 以与移动应用程序交互并使用keycloak.grantManager.obtainDirectlyAPI,但这grantType=passwordkeycloak-connect包中使用 - keycloak-connect有关gainDirectly的 更多信息

第一个选项有点乏味,所以我们实现了第二个选项,但它带有grantType=passwordoauth 不推荐的 flow

我想知道keycloak是否有任何解决方案可以使用自定义登录Authorization Code

0 投票
0 回答
1300 浏览

keycloak - keycloak 为前端和后端提供不同的发行者

我是 keycloak 的新手,我在前端和后端应用程序中都使用 keycloak,但是在 jwt.io 中解码时,我在 keycloak 生成的令牌中得到了不同的颁发者。

前端:

通过邮递员请求:

  • issuer 是内部 DNS 名称

我尝试了以下方法,

  1. 代理重定向(使用保留主机) - 使用前端基本 URL 生成发行者。
  2. 不保留主机的代理重定向 - 期望在前端应用程序解析私有 DNS
  3. 围绕 keycloak 配置进行游戏 - 将 frontendUrl 更新为https://example.org/auth并将 forceBackendUrlToFrontendUrl 更新为 true ,这导致后端和前端的发行者相同,但没有像 https:/auth/relam/external 这样的主机名(请参阅 #2 in参考)。

预期结果:

  • 我需要私有 DNS 作为来自前端和后端的请求的发布者(现在它可以直接后端请求)

提前致谢。

参考

  1. https://github.com/keycloak/keycloak-community/blob/master/design/hostname-default-provider.md
  2. 代码块

0 投票
2 回答
1377 浏览

node.js - NodeJs 和 Keycloak 集成给出 403?

我刚刚从这个Github拿了演示代码 所以我改变了keycloak-config.json

现在要首先访问 api 端点,我将生成令牌 在此处输入图像描述

在上述令牌的帮助下,我正在尝试访问安全 API 在此处输入图像描述

但它会因错误而失败

403:访问被拒绝

这是代码

即使这也给了同样的

我按照链接获取此演示代码

0 投票
2 回答
10534 浏览

node.js - 撤销 Keycloak 访问令牌

我正在使用 Keycloak 来保护我的 react 前端和 node.js 后端。这些客户端使用基于角色的授权进行保护。

我的前端应用程序在 Keycloak 中注册为公共客户端,后端注册为仅承载客户端。当用户登录到前端时,我正在获取该特定用户的访问令牌,并且我正在使用该访问令牌来调用后端 api 层。

当用户从前端注销时,我正在使用 keycloak 对象注销方法从 Keycloak 清除该特定用户的前端客户端会话。这工作正常,用户正在注销并重定向到 Keycloak 登录页面。

但问题是我仍然可以使用该注销用户的访问令牌来调用后端 api。即使用户注销,访问令牌仍然有效。

我试过这个端点来撤销用户访问令牌。但没有工作/auth/admin/realms//users/

有没有办法撤销 Keycloak 中特定用户的访问令牌?

0 投票
0 回答
825 浏览

node.js - Keycloak Nodejs访问被拒绝下载配置

我的 Nodejs-Keycloak 连接有一些问题,即使使用最基本的配置,我也会在身份验证(用户和密码工作,也注册)后拒绝访问。我在 Postman 和浏览器上收到拒绝访问。我遵循了官方指南和这个(Securing Node.js Express REST APIs with Keycloak)以及来自适配器的官方 Github 示例。

我的配置很简单

特快路线:

访问类型:机密

这是我的keycloak.json

我从客户端配置下的安装选项卡下载。

脚步:

  1. 转到 /secure URL,它会重定向到 keycloak 服务器登录页面
  2. 插入用户名(电子邮件)和密码并登录
  3. 被重定向回我的本地主机,但访问被拒绝 403

无论我使用的是机密还是不记名,我都会拒绝访问。我可以通过 Postman/curl 进行身份验证并获取令牌(持有者),还可以重定向到 Keycloack 登录页面并插入凭据,但我被拒绝访问。

在我的开发服务器控制台上,我得到这个:无法获得授权代码:错误:授权验证失败。原因:无效令牌(错误的受众)

0 投票
1 回答
48 浏览

keycloak - 无法在 keycloak 和 Gatekeeper 之间进行通信

我完全是 key-cloak 和 keycloak-gatekeeper 的新手我在我的机器上运行 keycloak,地址为 localhost:8080,因为我的网守在 minikube 环境中运行以下是我的配置和部署文件

我的配置文件如下:

我已经在 discovery-url 参数中设置了 localhost 路径。

因此,通过上述配置,我无法与 keycloak 进行通信。请提供有关此行为的一些指导。非常感谢任何形式的帮助。

0 投票
0 回答
1840 浏览

keycloak - Keycloak - 请求用户通过 api 验证电子邮件地址

期望的结果

用户应该能够注册,然后他应该能够通过移动应用程序登录(如果电子邮件地址未验证),应用程序会显示电子邮件未验证的警告,并且某些应用程序功能已禁用

我有什么

  1. 具有用户注册和登录功能的原生移动应用
  2. 应用程序使用的 api 服务器
  3. 密钥锁实例

注册功能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

0 投票
0 回答
383 浏览

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 上发出一些请求。未设置令牌的过期时间。