Keycloak适配器策略执行者

如果您使用的是Keycloak OIDC适配器,则可以对应用程序执行授权决策。

当您为Keycloak应用程序启用策略强制时,相应的适配器将拦截对您的应用程序的所有请求,并强制从服务器获取的授权决定。

策略实施与应用程序的路径以及使用Keycloak管理控制台为资源服务器创建的资源紧密相关。默认情况下,创建资源服务器时,Keycloak会为资源服务器创建一个默认配置,以便您可以快速启用策略强制。

默认配置允许访问您的应用程序中的所有资源,只要身份验证的用户属于与受保护的资源服务器相同的领域。

策略执行配置

要为您的应用程序启用策略强制,请将以下属性添加到您的keycloak.json文件中:

keycloak.json

{
  "policy-enforcer": {}
}

或详细一些,比如要手动定义被保护的资源:

{
  "policy-enforcer": {
    "user-managed-access" : {},
    "enforcement-mode" : "ENFORCING"
    "paths": [
      {
        "path" : "/someUri/*",
        "methods" : [
          {
            "method": "GET",
            "scopes" : ["urn:app.com:scopes:view"]
          },
          {
            "method": "POST",
            "scopes" : ["urn:app.com:scopes:create"]
          }
        ]
      },
      {
        "name" : "Some Resource",
        "path" : "/usingPattern/{id}",
        "methods" : [
          {
            "method": "DELETE",
            "scopes" : ["urn:app.com:scopes:delete"]
          }
        ]
      },
      {
        "path" : "/exactMatch"
      },
      {
        "name" : "Admin Resources",
        "path" : "/usingWildCards/*"
      }
    ]
  }
}

以下是每个配置选项的说明:

  • policy-enforcer

指定用于定义策略实际强制执行的配置选项,以及可选的保护路径。如果未指定,策略执行者将查询与受保护的资源服务器相关联的所有资源。在这种情况下,需要确保资源正确配置与要保护的路径匹配的URI属性。

  • user-managed-access

指定适配器使用UMA协议。如果指定,则适配器向服务器查询权限凭证,并根据UMA规范将其返回给客户端。如果未指定,则适配器依赖于发送到服务器的请求方令牌(RPT)来强制实施权限。

  • enforcement-mode

指定策略的执行方式。

  • ENFORCING

(默认模式)即使没有与给定资源相关联的策略,默认情况下拒绝请求。

  • PERMISSIVE

即使没有与给定资源相关联的策略,也允许请求。

  • DISABLED

完全禁用对策略的评估,并允许访问任何资源。

  • on-deny-redirect-to

定义当从服务器获取“访问被拒绝”消息时,重定向客户端请求的URL。默认情况下,适配器使用403 HTTP状态代码进行响应。

  • paths

指定要保护的路径。如果指定了此选项,则策略执行者会向服务器查询具有相同值的URI的资源。目前,支持路径匹配的基本逻辑。有效路径的示例是:

  • Wildcards:/*

  • Suffix:/*.html

  • Sub-paths:/path/*

  • Path parameters: /resource/{id}

  • Exact match: /resource

  • Patterns: /{version}/resource, /api/{version}/resource, /api/{version}/resource/*

  • methods

要保护的HTTP方法(例如,GET,POST,PATCH)以及它们如何与服务器中的给定资源的范围相关联。 + [/ '']

  • method

HTTP方法的名称。

  • scopes

具有与方法关联的范围的字符串数组。将范围与特定方法相关联时,尝试访问受保护资源(或路径)的客户端必须提供一个RPT,该权限授予列表中指定的所有范围。例如,如果使用范围创建定义方法POST,则RPT必须包含向路径执行POST时授予对创建作用域的访问权限。

  • enforcement-mode

指定策略的执行方式。

  • ENFORCING

(默认模式)即使没有与给定资源相关联的策略,默认情况下拒绝请求。

  • DISABLED

禁用对路径策略的执行

results matching ""

    No results matching ""