问题标签 [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 回答
2413 浏览

jwt - 调用rest api时keycloak注销不会使令牌无效

我有一个使用 Keycloak 作为身份验证服务的 React 应用程序。此外,我还有一个 Nodejs rest api,其端点由 keycloak 保护,因此 React 应用程序在需要调用 api 时发送 JWT。在 Keycloak 管理控制台中,我创建了 1 个具有用户和角色的公共客户端。

一切正常,但唯一的问题是当我通过管理控制台或在到期时间之前从我的 React 应用程序注销时,我仍然可以使用这些令牌调用我的应用程序。

为什么我的后端应用程序不使用服务器验证令牌?

我的节点应用程序使用 keycloak-node-connect 适配器,而我的 keycloak.json 是:

0 投票
1 回答
626 浏览

javascript - 节点 Keycloak 请求即使使用不记名令牌也会返回登录

我一直在尝试将 Keycloak 集成到一个简单的节点/快速服务器中,以便我可以使用标头中的不记名令牌进行身份验证,但我发出的每个受保护请求都返回 html(登录页面)。

我的简单 index.js 文件:

我的简单 kc-config.js 文件

我正在使用从这个 curl 请求返回的令牌:

我不应该被授权吗?为什么即使我的令牌有效,它也会要求我再次登录?

有关更多信息,这是我在 keycloak 管理控制台上为我的客户端设置的屏幕截图。

客户端密钥斗篷设置

我很困惑。我使用它完全错误吗?我的想法是,我可以简单地将 curl 请求中的令牌放入受保护 /kc-test 路由的请求的标头中。

0 投票
0 回答
1125 浏览

keycloak - 通过 iFrame 访问时的 Keycloak LOGIN_ERROR

尝试使用 iFrame 访问 Keycloak 登录时遇到问题。我收到以下错误:

尝试通过 chrome 浏览器访问它时工作正常,

附加信息

使用部署了单个 Keycloak 实例的 K8 集群。

0 投票
1 回答
334 浏览

kubernetes - 使用 Ingress 主机名的 Kubernetes 路由到服务 | 钥匙斗篷

我应该向服务/入口 yaml 添加什么字段,以便我可以使用入口中指定的关联(外部)主机名从同一集群中的另一个 pod 访问服务?

我正在使用带有默认入口类(nginx)的 microk8s,我需要一个适用于任何 kubernetes 平台(azure、gke、aks)的解决方案

我需要使用入口主机名从我的 nodejs 应用程序访问我的身份验证服务器(keycloak)。我不能使用服务名称,因为令牌验证会失败(JWT ISS 检查)。

谢谢!

0 投票
0 回答
123 浏览

kubernetes - 配置内部 kubernetes keycloak 服务地址时,keycloak-nodejs-connect grantManager 无法验证令牌

我在使用部署到 kubernetes 集群的 keycloak-nodejs-connect 库验证令牌时遇到问题 - 特别是在使用内部 kubernete 的 keycloak 服务地址作为 auth-server-url 时。我正在使用 keycloak 版本 10.0.1。

我们的工作流程如下 - 我们的 Web 应用程序使用公共 keycloak 客户端进行身份验证以获取访问令牌。此令牌附加到对数据库的数据请求。db (hasura) 在允许访问其数据之前使用 auth hook 来验证令牌。这个身份验证钩子实现了 keycloak-nodejs-connect 库,并通过提供的中间件调用 grantManager 的validateToken. 但是,当使用 kubernete 的服务地址 (http://keycloak:8080/auth/) 配置连接库时,保证在颁发者匹配时出错,因为 JWT 令牌 ( iss) 中的颁发者属性将是在密钥斗篷服务器(https://keycloak.public.address.uk/auth/)。

有没有办法为 keycloak-nodejs-connect 库提供前端和后端 url,以便在使用后端 url 通过 kubernete 的服务与 keycloak 对话时可以进行颁发者验证 - 或者我应该以某种方式配置 keycloak 所以发行人不同?我特别需要在这里使用 kubernete 的服务地址而不是公共地址来进行集群中的 keycloak 通信。

以下源位置超链接尝试在代码中突出显示问题:

非常感谢您的帮助,安迪。

0 投票
1 回答
1065 浏览

node.js - Keycloak 总是重定向到登录页面

我正在使用 keycloak 实例登录前端并保护后端 API。在 aws 上的 linux 机器上部署后,我遇到了一个问题。通过使用 jwt 令牌访问 api,我不断被重定向到登录页面。在本地它工作正常。

我的客户是机密客户。我正在使用 client_id 和 _secret 来授权令牌调用。jwt 令牌有效并成功生成。我的 api 实现适用于 expressJs 和 keycloak-nodejs-connector:

我可以想象它取决于当前的 https 设置。我的 nodejs api 为 http 和 https 提供了一个端点(本地带有自签名证书)。在运行 keycloak 的服务器上,我使用 certbot 添加了一个letsencrypt证书,在浏览器中一切看起来都很好。Keycloak 使用 docker-container jboss/keycloak 启动。

我很想弄清楚我当前的问题,非常感谢您的帮助:slight_smile:如果我错过了添加必要的信息,请告诉我。提前致谢。多米尼克

0 投票
1 回答
354 浏览

node.js - Keycloak 和 Node.JS:如何在 Keycloak 访问令牌过期后保持用户登录?

我正在尝试将我的应用程序配置为使用 keycloak 作为身份验证服务器,它有点工作,我能够成功登录,但是当访问令牌过期时,它会将我重定向到 keycloak 登录页面以再次登录,谁能告诉我如何保持会话在没有重新登录的情况下登录?,我检查了文档,但我找不到任何相关信息。

我正在使用keycloak-connect

0 投票
0 回答
769 浏览

node.js - 将 Keycloak 身份验证令牌从 NodeJS 传递到 React 应用程序

我有一个axios运行在 NodeJS 后端之上的 ReactJS 应用程序。我还有一个本地 Keycloak 服务器来启用单点登录 (sso) 和身份验证。

在 NodeJS 后端,我将 Keycloak 适配器配置为:

这按预期工作,当浏览器转到localhost:3000/secure它时,它被重定向到我的 keycloak 登录页面。成功登录后,浏览器将/secure使用响应正文中的用户访问令牌重定向回我的端点。这一切都在 NodeJS 中。

我现在的问题是应该以某种方式通知 ReactJS 有来自 keycloak 的有效令牌,并在Axioshttp 客户端上使用它来将经过身份验证的请求发送到在云服务器上运行的不同后端服务。

我是前端开发的新手。将令牌从 NodeJS 后端传递到在用户浏览器上运行的 ReactJS 前端应用程序以便可以通过Axios(将所有 http 请求发送到外部 api)来检索它的最佳方法是什么?

0 投票
1 回答
1201 浏览

node.js - 如果 keycloak 会话过期,我如何重定向到登录页面?

我正在尝试在我的 node.js 应用程序上实现 keycloak。

我在我的 node.js 应用程序上使用 keycloak-nodejs-connect。

如果网站超过session空闲时间没有任何操作,我想自动进入登录页面或通知已注销的用户(当session过期时,按F5会自动调出登录页面)。

Keycloak 版本:12.0.0 keycloak-nodejs-connect 版本:12.0.4

我只是使用我通过参考下面的源代码编写的代码。

https://github.com/keycloak/keycloak-nodejs-connect/blob/master/example/index.js

如何将客户端页面重定向到登录页面或注销页面?

感谢您的评论。

这是代码。

app.js var memoryStore = new session.MemoryStore();

app.use(session({ secret: 'mySecret', resave: false, saveUninitialized: true, store: memoryStore }));

var keycloak = new Keycloak({ store: memoryStore });

app.use(keycloak.middleware({ logout: '/logout', admin:'/' }));

index.js(router) var Keycloak = require('keycloak-connect');

var memoryStore = new session.MemoryStore(); var keycloak = new Keycloak({ store: memoryStore });

0 投票
1 回答
498 浏览

express - 反向代理背后的 keycloak-nodejs-connect express.js 应用程序

我已经为 Express JS 创建了一个带有 Keycloak 中间件的 node.js 应用程序,众所周知,它“在我的计算机上工作”。

此应用程序侦听端口 3000,但问题是浏览器将通过反向代理(端口 80)访问它。而且我无法让中间件向 Keycloak 发送正确的“redirect_uri”查询参数。它总是将具有相同端口 3000 的 URL 放置在本地服务器正在侦听的位置。

在文档中redirection-url找到了设置,但在 Github 存储库中没有找到该字符串的证据。