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

angular - keycloakprofile id 未定义

我需要帮助!我在用

当我做

我得到以下输出

但是,当我这样做时

我得到了用户的电子邮件 ID。

后端 spring 安全应用程序确实获取了用户 ID/主体。

请帮助我获取用户ID的方法吗?

0 投票
1 回答
1808 浏览

keycloak - 蛮力检测 - Keycloak

我们开始使用 Keycloak 作为新项目设计的身份和访问管理,并为我新创建的 Realm 启用蛮力检测。

它正在工作,但在我的用例中,我必须通知我的用户他们必须再等待 30 分钟才能再次尝试登录,因为他们已经达到最大登录失败。但是每当我在达到最大失败后尝试使用错误/正确的密码时,我都会收到“invalid_grant”作为错误消息。

{ "error": "invalid_grant", "error_description": "无效的用户凭证" }

如何通过不同的响应消息通知我的用户?

0 投票
1 回答
2336 浏览

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

我对 Keycloak 服务器非常陌生,想用它来保护我的前端应用程序和后端的 rest API,它们也通过互联网开放。到目前为止,我所理解和所做的是在 Keycloack 上创建 2 个客户端,1 个用于使用客户端协议(openid-connect)和访问类型(公共)的前端,然后在客户端我使用采用者将用户重定向到 Keycloak 登录页面并进行身份验证并获取令牌。现在对于后端(rest-apis),我创建了一个单独的客户端,它再次使用客户端协议(openid-connect)但具有访问类型(机密)和身份验证流:浏览器流和直接授权流都是直接授权和之后我得到客户端ID和客户端秘密来调用Keycloak rest api。

现在我希望当用户从前端进行身份验证并获取令牌并将标头请求发送到我的 rest API 时,我在这里调用一些 Keycloak rest api 通过提供 client_id 和 client_secret 来验证这个令牌。

我正在使用来自 Keycloak 的以下 api 来验证我在前端生成的令牌:

但结果是这样的:

如果我使用了一些错误的 api 或者整个架构来验证和保护我的后端 api 不正确。有人可以帮助我了解问题出在哪里吗?

0 投票
1 回答
1232 浏览

authentication - 如何检查来自另一个 keycloak 实例 B 的身份验证 keycloak 实例 A 用户?

我们为 keycloak 设置了一个测试环境。环境在 GCP 上运行。它有两个 keycloak 实例:

  1. 实例 A 充当测试登录密钥斗篷,名为 test-login-1
  2. 实例 B 充当测试外部身份提供者,名为 test-login-2

我们需要使用实例 A 连接实例 B。

因此实例 A 用户可以通过实例 B 登录。

有没有办法做到这一点?我们如何实现这个逻辑?

0 投票
2 回答
1072 浏览

keycloak - KeyCloak - 入口不允许通过 https 服务连接

我已经使用 helm 安装了 keycloak。创建 Traefik 入口以允许公共访问

从 localhost:8080 创建管理员密码后,我只能在端口转发和本地访问时登录管理控制台。

当我使用公共 url 并单击管理控制台时,它会重定向到 https://website/auth/admin/master/console/ 并显示一个空白页面。

我发现了问题,但是当我更改 servicePort: https inside ingress 时,我得到一个内部服务器错误状态代码 500。

当我使用 http 端口时,出现以下错误:混合内容:“https://url/auth/admin/master/console/”处的页面是通过 HTTPS 加载的,但请求了不安全的脚本“http://url/” auth/js/keycloak.js?version=mxda6'。此请求已被阻止;内容必须通过 HTTPS 提供。

混合内容:“https://url.ca/auth/admin/master/console/”页面通过 HTTPS 加载,但请求了不安全的脚本“http://url/auth/js/keycloak.js?version” =mxda6'。此请求已被阻止;内容必须通过 HTTPS 提供。

我查看了 traefik 日志:

level=debug msg="'500 Internal Server Error' 导致:x509:无法验证 xxxx 的证书,因为它不包含任何 IP SAN"

0 投票
0 回答
595 浏览

oauth-2.0 - 无法使用邮递员的 Keycloak 执行身份验证请求

我正在尝试使用 oath2.0 并在 Keycloak 中创建了一个客户端。所有设置似乎都按照文档,但是当我尝试使用邮递员请求使用授权时,控制台上显示以下错误消息:

我从不同来源读到的这条消息似乎是 OAuth 标准的一部分,在该标准中,客户端在执行 OAuth 请求时应该需要使用相同的证书。我在 Keycloak 服务器前面使用了代理,并且它使用了正确的 SSL 证书,为了克服这个错误,我尝试在邮递员设置中使用相同的证书和密钥,但我仍然无法解决这个问题。有人可以告诉我 Keycloak 设置中缺少什么或如何在邮递员处测试 OAuth 授权吗?

这是 Keycloak 设置中的客户端(oauth):

在此处输入图像描述 在此处输入图像描述

oAuth2.0 的邮递员请求。这是我用来为 oAuth2.0 创建邮递员请求的博客链接: https ://medium.com/@bcarunmail/securing-rest-api-using-keycloak-and-spring-oauth2-6ddf3a1efcc2

邮递员请求图片链接

0 投票
1 回答
124 浏览

node.js - 如何在 keycloak 中获取最后添加的用户或更新的用户?

我想获取最近 1 天添加或更新的用户列表。我阅读了 keycloak 的文档,但没有找到任何方法来获取该列表。任何人都请帮助我,因为我是keycloak的新手,我不知道该怎么做。实际上,我想将最新更新/添加的用户存储在我的本地数据库中,并在该数据库上进行自定义搜索。

0 投票
1 回答
423 浏览

keycloak - Keycloak未获得授权

大家好,我目前对 Keycloak 有疑问。也许我没有完全了解这一切。

我想做的事:通过 Keycloak 保护 Rest-Service - 这只是承载。客户端从 Keycloak 请求令牌并使用令牌调用 Rest-Service。

到目前为止我做了什么:

步骤 1 保护 Rest-Service:

keycloak.json 文件添加:

编辑 web.xml:

--> 如果我现在调用 RestService,则 ReST-Service 是安全的,我得到“未经授权”作为响应

步骤 2 配置 Keycloak

添加一个新领域 添加 2 个客户端 1 个用于服务(作为承载仅称为 vux-services) 1 个用于客户端(称为 Postman,因为我将使用 postman 作为客户端) 定义范围

步骤 3 使用 Postman 请求令牌

请求令牌工作正常。

如果我解码它,它看起来像:

所以我可以访问令牌中的 vux-services 等资源。如果我现在通过 Postman 调用带有该令牌的其余服务,例如:

带有授权标头的邮递员呼叫

首先,我遇到了 ReST-Service 响应未授权的问题。我能够(在 stackoverflow 的大力支持下)处理这个问题。问题是我没有在授权标头中的令牌前面添加承载(+空格)。

尽管如此,我得到一个 NullPointer 异常:

我将在 WildFly 服务器上安装新的 KeyCloak 适配器,希望问题可能出在某个地方。我会及时更新。

非常感谢您投入时间:-)

0 投票
1 回答
2544 浏览

keycloak - Keycloak 重定向页面显示我们很抱歉.. 找不到页面

我已经在我的 EKS 集群上部署了 keycloak,并且能够成功访问仪表板并已经创建了一个新领域。

于是想测试一下自己的keycloak,就去https://www.keycloak.org/app/测试了一下。

我创建了一个带有根 URL“https://www.keycloak.org/app/”的客户端,并创建了一个用户。我已经使用我的领域的帐户登录成功地测试了我的用户。

然后我去了https://www.keycloak.org/app/输入我的 keycloak URL 作为https://keycloak.test.nip.io,领域为 Test(与我的领域同名),然后客户端名称为一个门户(在 keycloak 上创建的同名客户端)。

当我点击登录时,它会重定向到我的密钥斗篷 URL,但显示我们很抱歉...找不到页面

任何人都知道我为什么会收到此错误以及如何避免这种情况。

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)来检索它的最佳方法是什么?