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

api网关密钥斗篷无效承载令牌

莫河
2023-03-14

我正在尝试在API网关(Apache APISIX)后面使用KeyClope。

我使用minikube来运行KeyClope和API网关。

网关正常工作,KeyClope也正常工作:

使用KeyClope,我可以使用不同的endpoint(使用发现endpoint(http://127.0.0.1:7070/auth/realms/myrealm/.well-已知/uma2配置),询问访问令牌并进行验证)。

有了APISIX和一条简单的路线,我可以在我的minikube上加入后端微服务。(通常:http://127.0.0.1:80/greeting由网关提供服务,网关将请求路由到右侧后端微服务

当我尝试同时使用这两个工具时,就会出现问题。我使用了keydepage集成,以强制用户在使用网关提供的路由时使用有效令牌。

在这种情况下,当我使用有效的承载令牌(我获取它并用keybeat的endpoint进行验证)并尝试通过api网关使用验证的承载令牌请求后端时,我系统地获得了“无效承载令牌”异常。

{"error":"invalid_grant","error_description":"Invalid bearer token"}

我认为集成的设置设置得很好,因为我确信te gateway会调用KeyClope来验证令牌。

以下是我用来获取和验证令牌的密钥斗篷:

获取令牌:http://127.0.0.1:7070/auth/realms/myrealm/protocol/openid-connect/token

验证:http://127.0.0.1:7070/auth/realms/myrealm/protocol/openid-connect/token/introspect

我看到了一些关于问题的帖子,当Keycloak是在一个反向代理背后,但我没有找到一个明确的解决方案

谢谢你能给我带来的任何帮助。问候CG

共有1个答案

轩辕亮
2023-03-14

我认为有一些方法可以做到这一点。

首先,我认为您可以查看Apache APISIX的日志。

其次,您可以查看keydepeat的日志。

第三,您可以使用tcpdump或wireshark来捕获apacheapisix发送给keycode的请求。并区分APISIX和curl发送的请求。

期待您的回复。

 类似资料:
  • 不知何故,我迷失了Spring Security和Keycloak。 在一个应用程序中,我成功地从KeyClope实例接收了一个访问令牌。然后,我使用这个令牌请求我的Spring Security服务器(它使用相同的KeyClope实例)。 但我得到的只是403个错误。 以下是代码摘录(用kotlin编写): 安全配置: 在我的控制器中: 在我对服务器的调用中,我可以验证授权头的设置如下:auth

  • 我有java REST应用程序,我希望通过keycloak保护。我做了一些测试,应用程序与keycloak servlet过滤器配合良好,但我在Spring Security适配器方面遇到了问题。 钥匙斗篷。json(删除值) 可见,我只需要承载授权,若请求包含有效令牌,那个么若不是http 401,那个么我希望是http 200。我使用了以下xml配置: 到底发生了什么?请求经过身份验证,但成功

  • 我正在尝试编写一个定制的KeyClope验证器,该验证器可以从某个请求中检索用户凭据,并动态提交这些凭据进行身份验证,而最终用户不必手动将它们输入某个登录表单。 以这个问题为起点,我在KeyCloak中创建了自己的自定义身份验证SPI。我还根据需要配置了KeyCloak身份验证流。 自定义验证器 自定义验证器工厂 下面是我的自定义登录表单,它基于这里的KeyClope“secret questio

  • 我想设置一个Docker网络,其中包含keyCloak、postgres和webapp实例。 有没有一种方法可以在容器之间进行网络通信,同时也理解oidc客户端重定向?我有一个问题,容器可以互相交谈只是罚款,如果我设置OIDC容器名称为docker网络,但然后我遇到的问题与客户端,不能连接到这些相同的URL以外的docker网络在主机上机器。 有人能给我指出正确的docker留档来寻找DNS或主机

  • 谁知道如何使用获取id_令牌? 我一直在(Spring,JEE)和postman中与合作。 基本的工作正常,但我需要,因为有一些声明,它们不存在于中,但它们存在于中。 使用库,我可以获得Keycloak上下文,但id_token属性始终为null。 有什么主意吗?

  • 我正在使用SAML和外部IdP实现SSO选项。如果我在单击浏览器中的SSO按钮后检查收到的SAML响应,我可以看到所需的身份验证数据(如用户名和电子邮件),因此与IdP的通信工作正常。 然而,Keycloak并不执行登录,并显示给我一个页面,上面写着:“我们很抱歉...登录超时,请重新登录。”,并且没有新用户注册。我的领域中令牌的登录超时设置为30分钟。 查看日志时,我发现了以下错误: 我发现这可