从 keycloak 的密码策略中排除具有领域管理角色的用户

Exclude a user with realm-management role from keycloak's password policy

我在包含密码策略的领域中有一个具有客户角色领域管理的用户。 我想从密码策略中排除该用户,因为我使用该用户执行一些操作获取角色通过 Java API 获取所有用户并且我不希望所有操作在密码需要更新。 我尝试使用主领域的管理员用户,但没有得到任何结果

有什么想法吗?

当您使用密码策略在 keycloak 中创建一个领域并且您想从该策略中排除管理员用户时,请按照以下步骤操作:

当用户创建新领域时,例如“FooRealm”keycloak 在主领域内添加带有后缀 -realm 的同级客户端,在这种情况下,我们将看到 FooRealm-realm

  1. 在此客户端中,FooRealm-realm 进行这些更改(设置选项卡)

    • 访问类型 = 机密
    • 标准流程启用 = ON
    • 直接访问授权启用 = ON
  2. 在主领域内创建用户,在用户详细信息中,转到:角色映射 >> 客户端角色,然后从下拉菜单中 select 兄弟客户端 (FooRealm-realm) 并确保它拥有里面的所有角色

  3. 现在从 Slave realm FooRealm 获取所有用户

    Keycloak keycloak = KeycloakBuilder.builder()
             .serverUrl("http://localhost/auth")
             .realm("master")
             .grantType(OAuth2Constants.PASSWORD)
             .clientId(FooRealm-realm)
             .clientSecret("7f0080cf-xxxx-xxxxx-9115-xxxxxxxxxx")
             .username("sysadmin")
             .password("x123456")
             .build();
    RealmResource realmResource = keycloak.realm("FooRealm");
    
    realmResource.users().list(0, 1000);