问题标签 [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 投票
2 回答
2515 浏览

authentication - Keycloak - 500 Internal Server Error - 验证由机密客户端生成的令牌时

在 Keycloak 服务器中,我们创建了一个Access Type具有confidential. 通过使用和调用/protocol/openid-connect/token端点,我们得到了,它应该在后续请求中对有问题的应用程序(客户端)进行身份验证。client_idclient_secretaccess_token

即使令牌是有效的(我通过调用introspect端点进行了双重检查),对于任何具有此功能的请求,我都会从服务器收到 500 错误access_token

简而言之:

  • 调用此端点<base_url>/auth/realms/<realm>/protocol/openid-connect/token会提供 access_token
    • 提供的数据:client_id、client_secret、grant_type:“client_credentials”
  • 打电话<base_url>/auth/realms/<realm>/protocol/openid-connect/userinfo500Internal Server Error

关于问题可能是什么的任何见解?

0 投票
1 回答
400 浏览

node.js - 如何配置 keycloak-(nodejs-)connect 以使用 PKCE?

我有一个我想用keycloak-connect. 我还没有找到任何关于如何在这个中间件中使用 PKCE 设置授权代码流的文档或示例。

我想我已经正确配置了 Keycloak (IDP),因为来自应用程序的身份验证失败,因为中间件既不传输code_challenge也不传输code_challenge_method参数,身份验证服务器拒绝:

中间件配置:

keycloak-connect甚至有能力利用这个流程吗?

0 投票
0 回答
23 浏览

keycloak - 如何在 Keycloak 中获取 tanantId 的用户

我创建了一个新用户,并打算使用新用户登录。然后我收到以下错误。

登录错误:用户可能来自另一个租户。

从调试中,当我调用 Keycloak REST API 时,它会导致 403 错误。我该如何解决?

0 投票
0 回答
427 浏览

node.js - nodejs Keycloak适配器强制redirect_uri与ssl

我有一个带有保护https://example.com的 keycloak 适配器的 nodejs express 应用程序(使用 SSL)

我的 keycloak 适配器是这样配置的: 注意两个 URL 中在此处输入图像描述 的 http S。

现在我面临一个问题,当用户成功登录(通过 keycloak)时,他会看到“无效参数:redirect_uri”错误消息。

使用我在转到https://example.com(使用 SSL)后看到的浏览器开发工具,用户被重定向到https://sso.example.com/auth/realms/myrealm/protocol/openid-connect/auth?client_id =my-client-id&state=22f41ed3-ddc6-4758-970b-d876cf631ded&redirect_uri=http%3A%2F%2Fexample.com%2F%3Fauth_callback%3D1&scope=openid&response_type=code

上面链接中的关键点是redirect_uri=http%3A%2F%2Fexample.com%2F%3Fauth_callback%3D1&scope=openid&response_type=code。在这里我们可以看到redirect_uri没有 SSL。它是 http 而不是 http s

这就是我保护域根的方式:

我的keycloak配置是:

redirect_uri必须使用 SSL 。如何强制 keycloak 在 redirect_uri 中使用 http ( SSL)?

http://example.com(非 SSL)添加到Valid Redirect URIs不是一个选项。

0 投票
1 回答
222 浏览

express - 将 Keycloak 添加到 express 服务器以从请求中获取 kauth

我正在尝试使用keycloak-connect将 Keycloak 身份验证添加到我的 ApolloServer 。我已经设置了我的领域并从localhost:8080/auth. 但是,我在从上下文函数中的请求中获取 kauth 时遇到问题:

目前我有以下设置:

然后我尝试req.kauth在上下文中访问,例如:

但是,我无法从我的请求中检索 kauth 属性。我该如何解决这个问题?

0 投票
0 回答
40 浏览

node.js - 带有 nodeJs 的 Keycloak-Connect Enforcer 不起作用

已经 2 天了,我正在尝试使用 Nodejs 将 Keylcoak 与“凭据”类型一起使用。我看到很多帖子和示例都使用 Bear-only,但也有一些使用 Credential,而我看到的内容对我不起作用..

这是我的代码:

我配置 Keycloak 并创建一个客户端名称“TEST”并打开 te 凭据类型,创建权限和资源。但是当我尝试在“/用户”中连接时,我有一个“拒绝访问”,但没有/测试'..

我需要在我的 keycloak 管理面板中配置一些东西吗?

谢谢你帮助我!

0 投票
2 回答
172 浏览

typescript - 如何扩展从“nest-keycloak-connect”导入的 AuthGaurd 类

我在nestjs中使用nest-keycloak-connect,我想创建我自己的类,从AuthGuard类扩展以获得一些自定义功能

我试过了,效果很好

但是我需要添加一个构造函数,这样我就可以在这里使用一些服务,比如 HttpService 谁能帮我看看我该怎么做?

如果我给构造函数参数,比如

我遇到了这个错误

“KeycloakAuthGuard”类错误地扩展了基类“AuthGuard”。类型具有私有属性“keycloak”的单独声明。

您可以在这里找到 类 AuthGaurd代码: https ://github.com/ferrerojosh/nest-keycloak-connect/blob/master/src/guards/auth.guard.ts

nest-keycloak-connect 包 https://www.npmjs.com/package/nest-keycloak-connect

0 投票
1 回答
132 浏览

node.js - keycloak-connect nodejs / meteor - 仅在首次登录时拒绝访问,仅在 prod

我有一个流星/nodeJs 应用程序需要连接到我的客户端进行身份验证。我这样设置了一个连接访问点(我只是匿名了各种值):

问题是:

  • 当我在本地运行我的服务器并转到 /connect 链接时,我被重定向到连接平台。我连接并被发送回我的 localhost:3000/connected => 一切都按预期工作
  • 当我在生产环境中执行完全相同的流程时,我在第一次尝试登录后被拒绝访问(只有访问被拒绝写入的空白页面)。如果我随后手动返回 /connect 链接,我将直接连接(我想我正确获得了令牌并可以再次连接)

我不知道为什么两种环境的行为都不同,以及为什么我在生产时会收到拒绝访问的页面。

0 投票
1 回答
82 浏览

node.js - 如何在使用 keycloak 进行身份验证时处理 uri 重定向

我想使用 keycloak 进行我们的 Nodejs 应用程序身份验证。我们有一个 node.js 后端和一个 UI5 前端。我希望所有流量都流经密钥斗篷,然后在成功验证后,流量应该被重定向并允许通过,并且在失败时重定向到失败或权限被拒绝屏幕。
您如何将请求重定向到 keycloak 身份验证,然后相应地重定向流量?我知道 keycloak 有一些 keycloak.protect() 来进行身份验证,但是您如何检查令牌并重定向流量?您如何在后端和前端 w keycloak 上配置路由?

0 投票
0 回答
75 浏览

keycloak - 如何将自定义属性添加到仅承载客户端

我将 keycloak-connect (nodejs) 用于我的后端,并带有仅承载配置文件。前端是具有公共配置文件的客户端:

1 - 如何在 userInfo 中添加一些只能由后端访问的私有自定义属性(仅限承载)?我正在向客户端添加一些只能由后端看到的属性,而且我不想将它们添加到令牌中,因此我不会拥有巨大的令牌大小。

2 - 会话如何与 keycloak-connect 一起使用?当我检查我的商店(redis)时,我没有看到 keyclaok 存储的任何内容,也没有在文档中找到任何内容。

3 - 执行在线验证时,grantmanager.validateAccessToken 是否足以获取 userInfo 还是我还需要使用 grantmanager.userInfo ?因为 2 个请求有点贵

谢谢