首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORY Oathkeeper匹配多个规则

ORY Oathkeeper匹配多个规则
EN

Stack Overflow用户
提问于 2021-08-14 15:35:08
回答 1查看 45关注 0票数 0

在ORY Oathkeeper中,我想要一个对域根的请求,以转到一个服务器,以及一个对子路径的请求,以转到另一个服务器。所以我定义了两个这样的规则:

代码语言:javascript
复制
[
  {
    "id": "ping1",
    "version": "v0.0.1",
    "upstream": {
      "url": "http://backend1/"
    },
    "match": {
      "url": "http://<.*>/api/ping1",
      "methods": ["GET"]
    },
    "authenticators": [{ "handler": "anonymous" }],
    "authorizer": { "handler": "allow" },
    "mutators": [{ "handler": "noop" }]
  },
  {
    "id": "ping2",
    "version": "v0.0.1",
    "upstream": {
      "url": "http://backend2/"
    },
    "match": {
      "url": "http://<.*>",
      "methods": ["GET"]
    },
    "authenticators": [{ "handler": "anonymous" }],
    "authorizer": { "handler": "allow" },
    "mutators": [{ "handler": "noop" }]
  }
]

访问根目录是可行的。但是,当我尝试访问以/api/ping1结尾的子路径时,得到的结果是“期望只有一条规则,但发现了多条规则reason= request-id= status=500”。

我可以通过不将根规则定义为"url": "http://<.*>"来解决此问题,而是使用特定的域名。

这是可行的:

代码语言:javascript
复制
"match": {
      "url": "http://mydomainname.com",
      "methods": ["GET"]
},

但是,我想避免这种情况,并能够在那里放置一个通配符来匹配域名。有没有一种方法可以在不明确指定域名的情况下实现这一点?

EN

回答 1

Stack Overflow用户

发布于 2021-08-15 16:46:54

我发现如果我在匹配url的末尾添加一个斜杠,它就可以使用通配符,如下所示:

代码语言:javascript
复制
{
    "id": "ping2",
    "version": "v0.0.1",
    "upstream": {
      "url": "http://backend2/"
    },
    "match": {
      "url": "http://<.*>/",  <--- SLASH ADDED AT END
      "methods": ["GET"]
    },
    "authenticators": [{ "handler": "anonymous" }],
    "authorizer": { "handler": "allow" },
    "mutators": [{ "handler": "noop" }]
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68784760

复制
相关文章

相似问题

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