密钥斗篷网守不阻止任何请求

时间:2019-04-10 23:57:55

标签: keycloak keycloak-gatekeeper

我正在尝试在个人api from pyspark.sql import types as T, functions as F df = spark.createDataFrame([ ('0', 0), ('1', 1), ('2', None), (None, 3), (None, None), None, ('6', 6), ('7', 7) ], T.StructType([ T.StructField('str', T.StringType()), T.StructField('num', T.IntegerType()) ]) ) for n in range(7): try: print(df.take(n+1)) except: print("Null on row [{}]".format(n)) break # print(df.show()) # df.toPandas() 中使用keycloak + keycloak-gatekeeper进行授权。到目前为止,我已经完成了:

  1. 在密钥斗篷中创建了一个领域api.mydomain.com,密钥斗篷的URL为https://auth.mydomain.com
  2. 使用MY-REALM ON confidential client在同一领域中创建Authorization Enabledhttps://api.mydomain.com/ *
  3. 创建用户
  4. 我的服务器https://api.mydomain.com内部指向127.0.0.1:5000
  5. 127.0.0.1:5001是“真正的API”
  6. 使用以下config.yaml配置的keycloak-gatekeeper:
Valid redirect URIS

现在,如果我在浏览器https://api.mydomain.com中访问,我将被重定向到https://auth.mydomain.com,要求输入用户名和密码。我提供了在第3点中创建的用户,并按预期将其再次重定向到https://api.mydomain.com。到目前为止一切都很好。

问题出在授权部分的配置中: 在密钥斗篷-> client-id: <MY-API-CLIENT-ID> client-secret: <SECRET> discovery-url: https://auth.mydomain.com/auth/realms/<MY-REALM> enable-default-deny: true listen: 127.0.0.1:5000 upstream-url: http://127.0.0.1:5001 verbose: true enable-logging: true enable-security-filter: true enable-json-logging: true -> Clients-> <MY-API-CLIENT-ID>-> Authorization中,我将默认策略编辑为拒绝 {{ 1}} / * ,但我可以像以前一样访问https://api.mydomain.com中的每个资源(URL)。

我尝试过:

  1. 受领域角色限制(仅管理员可以访问特定资源)。
  2. 受范围限制。
  3. 否定策略中的逻辑。
  4. 受客户端角色限制。
  5. 祈祷。
  6. 哭。

当然,我已经在密钥斗篷的Resources标签中尝试了上述各项的所有组合,并在此处有效地模拟了策略显示 DENY

那么我在做什么错了?顺便说一句,在每个请求之后,这是来自keycloak-gatekeeper的日志:

resource

任何想法都会得到深深的赞赏。

1 个答案:

答案 0 :(得分:0)

Gatekeeper不使用Keycloak -> Clients -> <MY-API-CLIENT-ID> -> Authorization -> Resources

它具有自己的资源配置,例如:

resources:
- uri: /admin/*
  methods:
  - GET
  roles:
  - openvpn:vpn-user
  - openvpn:commons-prod-vpn

文档:https://www.keycloak.org/docs/latest/securing_apps/index.html#configuration-options