当前位置: 首页 > 知识库问答 >
问题:

KeyCloak node.js适配器为公共客户端提供了找不到的KeyCloak页面,并拒绝了对只承载客户端的访问

马峻
2023-03-14

当我在Keycloak中设置公共客户端时,为本地沙箱设置所有必需的字段

  • 访问类型:公共
  • 有效重定向URI:http://localhost:3000/*
  • 网站来源:*

我将Keycloak OIDC JSON从installation选项卡保存到本地Keycloak.JSON文件中,添加我的Node.js应用程序并点击http://localhost:3000/protected,我在浏览器中得到以下页面:

{
  "realm": "keycloak-node-monolith",
  "auth-server-url": "http://localhost:8180/auth/",
  "ssl-required": "external",
  "resource": "keycloak-node-monolith-public",
  "public-client": true,
  "confidential-port": 0
}

对于只承载客户端,问题就不那么明显了,因为没有身份验证重定向,您也看不到URL。

对于只有承载的客户端,即使您向服务器发送了正确的承载令牌,您也只能看到访问被拒绝。

在这两种情况下,问题的根本原因是相同的:Keycloak-connect在auth-server-url之后添加了额外的/,因此必须删除keycloak.json中的/

共有1个答案

明财
2023-03-14

问题的根本原因是keycloak-connect将在keycloak.json中的auth-server-url后面添加一个额外的/

这意味着您不能使用您从客户机表单复制的Keycloak OIDC JSON,您必须从auth-server-url中删除后面的/。这对我很有效:

{
  "realm": "keycloak-node-monolith",
  "auth-server-url": "http://localhost:8180/auth",
  "ssl-required": "external",
  "resource": "keycloak-node-monolith-public",
  "public-client": true,
  "confidential-port": 0
}

如果您正在构建一个只承载的用例,这是很烦人的,因为您看不到URL。我花了一段时间才算出来。在我建立了一个公共客户端并看到了发生的事情后,我找到了解决方案。

 类似资料:
  • 我正在尝试在windows server 2008 R2上使用Apache 2.4服务器配置Git服务器。 我将它添加到httpd.conf文件中: 我在中创建了一个存储库。我键入以下命令,用远程机器克隆它: 我收到了以下错误: 在我的阿帕奇错误中.log我可以看到这个: 我想知道这是不是因为我没有匿名访问git服务器的权限? 我需要自动创建用户来使用git服务器吗? 这个问题不能帮助我解决我的问

  • 我有一个前端和后端应用程序(angular spring boot)。前端用作静态web内容,然后它将其余调用发送到同一端口上的后端API。 带有OpenID协议的keydape用于用户身份验证和角色管理。在需要身份验证的请求中,浏览器被重定向到KeyClope,用户给出用户名和密码,然后用户角色被返回到浏览器并写入访问令牌。 随后前端将此访问令牌与每个请求一起发送,后端在满足请求之前根据KeyC

  • 我们使用keycloak-adapter与Jetty一起使用KeyCloak进行身份验证和授权。根据OIDC Auth流程的Keycloak文档: 我们有连接到Jetty并使用Auth的webapps。因此,我们创建了一个公共客户端,它对WebApp/REST身份验证非常有效。 问题是,一旦我们启用授权,客户端类型就会从公共类型转换为机密类型,并且不允许将其重置为公共类型。现在,我们在汤里。由于授

  • 主要类别 JettyWebsocketServelet实现: 依赖性: 错误: JAVAnio。频道。组织上的ClosedChannel异常。日食码头。websocket。果心内部的WebSocketSessionState。org上的其中一个(WebSocketSessionState.java:174)。日食码头。websocket。果心内部的WebSocketCoreSession。org上

  • 应如何管理它们? 一些更具体的问题: 根据定义,本机应用程序(实际上是公共客户端)不能安全地存储其凭据(client_id+secret)。是未注册的客户吗?如果我不能使用秘密来验证/验证它,我还应该做什么? 客户端注册≠endpoint注册:第一个是关于注册客户端凭据();第二个关于注册客户端重定向endpoint。重定向endpoint注册是否足以授予客户端的真实性? 客户端凭据授予是否使用相

  • 我正在编写一个小型Java RMI服务器和客户端程序。我花了一些时间试图找出错误消息,但没有成功。 客户端生成以下错误: 尝试连接到:127.0.0.1:3232错误!!!:StockClient:Main:无法连接到服务器:java.rmi.UnMarshalException:解封返回头时出错;嵌套异常为:java.rmi.UnmarshalException:反封送返回头时出错;嵌套异常为: