首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keycloak网关守护者总是无法验证'iss‘索赔值

Keycloak网关守护者总是无法验证'iss‘索赔值
EN

Stack Overflow用户
提问于 2019-11-28 10:20:09
回答 2查看 5.2K关注 0票数 0

match-claims添加到配置文件似乎没有什么作用。实际上,守护者在打开资源时总是抛出相同的错误(不管是否有该属性)。

我的Keycloak服务器位于一个码头容器中,可从内部网络作为http://keycloak:8080访问,而从外部网络以http://localhost:8085的形式访问。

我让网关管理员连接到内部网络中的密钥披风服务器。请求来自外部请求,因此,discovery-url将与'iss'令牌声明不匹配。

看门人正试图使用discovery-url作为'iss'的声明。要覆盖这一点,我将按以下方式添加match-claims属性:

代码语言:javascript
复制
discovery-url: http://keycloak:8080/auth/realms/myRealm
match-claims:
  iss: http://localhost:8085/auth/realms/myRealm

这些日志看起来像:

启动时的

代码语言:javascript
复制
keycloak-gatekeeper_1  | 1.5749342705316222e+09 info    token must contain
  {"claim": "iss", "value": "http://localhost:8085/auth/realms/myRealm"}

keycloak-gatekeeper_1  | 1.5749342705318246e+09 info    keycloak proxy service starting
  {"interface": ":3000"}

应请求

代码语言:javascript
复制
keycloak-gatekeeper_1  | 1.5749328645243566e+09 error   access token failed verification
  { "client_ip": "172.22.0.1:38128",
    "error": "oidc: JWT claims invalid: invalid claim value: 'iss'.
           expected=http://keycloak:8080/auth/realms/myRealm,
           found=http://localhost:8085/auth/realms/myRealm."}

这在403禁止的响应中结束。

我在Keycloak-Gatekeeper 8.0.05.0.0上尝试过,两者都有相同的问题。

  1. 这是我想用的方法吗?
  2. 如果没有,我遗漏了什么?如何验证iss或绕过此验证?(最好是前者)?
EN

回答 2

Stack Overflow用户

发布于 2019-11-28 18:10:59

它在发现数据验证过程中失败--您的设置违反了OIDC规范

返回的颁发者值必须与直接用于检索配置信息的issuer URL相同。这也必须与从这个发行者发出的ID令牌中的iss索赔值相同。

它是必须的,所以你不能禁用它(除非你想破解源代码--它应该在coreos/go-oidc库中)。正确配置基础设施设置(例如,在内部/外部网络中使用相同的DNS名称,为内部网络请求重写内容,.)你会没事的。

票数 2
EN

Stack Overflow用户

发布于 2022-02-26 08:05:19

将DNS名称更改为host.docker.internal

  1. 令牌端点:http://host.docker.internal/auth/realms/example-realm/open-id-connect/token
  2. 属性文件中的发行者URL作为http://host.docker.internal/auth/realms/example-realm

通过这种方式,可以实现外部世界访问和对keycloak的内部调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59086511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档