Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot KeyClope:将ldap组映射到springboot角色_Spring Boot_Keycloak - Fatal编程技术网

Spring boot KeyClope:将ldap组映射到springboot角色

Spring boot KeyClope:将ldap组映射到springboot角色,spring-boot,keycloak,Spring Boot,Keycloak,我们公司的用户存储在ldap(oracle internet目录)中。用户具有特定的组,例如管理员、用户等。 我需要将这些组映射到我的客户端应用程序角色。客户端应用程序是带有KeyClope Spring安全适配器()的测试Spring引导应用程序 我在KeyClope管理控制台中执行的步骤: 在用户联盟菜单中,使用ldap创建用户联盟(不导入)。检查是否可以在用户菜单中找到ldap用户 添加组ldap映射器检查ldap组在“组”菜单中是否可见。用户还具有正确的组成员资格: 在客户端中,为我的应

我们公司的用户存储在ldap(oracle internet目录)中。用户具有特定的组,例如管理员、用户等。 我需要将这些组映射到我的客户端应用程序角色。客户端应用程序是带有KeyClope Spring安全适配器()的测试Spring引导应用程序

我在KeyClope管理控制台中执行的步骤:

  • 在用户联盟菜单中,使用ldap创建用户联盟(不导入)。检查是否可以在用户菜单中找到ldap用户
  • 添加组ldap映射器检查ldap组在“组”菜单中是否可见。用户还具有正确的组成员资格:
  • 在客户端中,为我的应用程序创建客户端
  • 在客户端创建两个角色-管理员和用户:
  • 在组-管理员(ldap组)-角色映射中添加管理员客户端角色:对用户执行相同操作。现在“用户”菜单中的“我的用户”具有正确有效的角色,包括管理员和用户:
  • 使用KeyDopperWebSecurity配置适配器创建简单的Spring启动应用程序: 和application.yml:

    现在,我在浏览器中访问我的客户端应用程序,并被重定向到KeyClope,在那里我使用ldap用户密码进行身份验证。
    我希望经过身份验证的用户在应用程序中具有管理员角色。但实际上它只有标准的keydape角色,而没有我在client:Controller方法中创建的自定义角色,带有
    @PreAuthorize(“hasRole('ADMIN')”)
    响应403

    我错过了什么?
    谢谢钥匙斗篷12.0.3,弹簧靴2.4.2


    upd:

    我已在我的客户端应用程序外部(使用http客户端)向Keyclope auth endpoint发出http请求,并且在收到的访问令牌中,我确实在
    resource\u access
    部分看到了我的自定义管理员和用户角色:

    "realm_access": {
        "roles": [
          "offline_access",
          "uma_authorization"
        ]
      },
      "resource_access": {
        "adapter-client-test": {
          "roles": [
            "ADMIN",
            "USER"
          ]
        },
    

    所以我相信keydove本身的配置是正确的,但是spring boot客户端应用程序有问题吗?

    事实证明,我错过的一件事是application.yml中的
    keydove.use-resource-role-mappings:true

    发件人:

    使用资源角色映射
    如果设置为true,适配器将在令牌中查找用户的应用程序级角色映射。如果为false,它将在领域级别查看用户角色映射。这是可选的。默认值为false

    应用程序验证后,用户收到自定义客户端级别的角色。

    尝试在客户端下添加“用户客户端角色”类型的映射器。下面回答了一个类似的问题