Keycloak REST API 403 禁止

问题描述 投票:0回答:3

我正在尝试使用 keycloak REST API 删除用户会话, 但获取 403 禁止 Http 状态代码。 我正在将令牌和 cookie 传递到标头中,如果我遗漏了某些内容,请告诉我。

static void logOut(String userId,KeycloakSecurityContext session){

        userId = "a12c13b7-fa2e-412f-ac8e-376fdca16a83";

        String url = "http://localhost:8081/auth/admin/realms/TestRealm/users/a12c13b7-fa2e-412f-ac8e-376fdca16a83/logout";
        HttpClient httpclient = HttpClients.createDefault();
        HttpPost httppost = new HttpPost(url);

        HttpResponse response;
        try {

            httppost.addHeader("Accept", "application/json");
            httppost.addHeader("Content-Type","application/json");
            httppost.addHeader("Cookie", "JSESSIONID=CABD8A135C74864F0961FA629D6D489B");
            httppost.addHeader("Authorization", "Bearer "+session.getTokenString());


            response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();

            System.out.println("entity :"+response.getStatusLine());

            if (entity != null) {
                String responseString = EntityUtils.toString(entity, "UTF-8");
                System.out.println("body ....."+responseString);
            }
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
keycloak keycloak-services
3个回答
18
投票

您用于根据功能访问的用户需要根据您领域的权限。

例如,我的“管理员”用户需要客户端“领域管理”的客户端角色“查看用户”才能获取有关用户的信息。在您的情况下,当您需要删除用户时,您可能需要一个“管理用户”角色或者可能是更强大的角色。


3
投票

管理用户的领域管理角色将授予您删除权限。 您可以从角色映射选项卡的客户端角色下拉列表中选择领域管理。

管理用户是一个强大的角色,它可能会向最终用户授予比您想要的更多的权限。您可以升级其他用户角色,删除任何人等。请根据您的要求进行测试。


0
投票

要删除用户的会话,必须使用管理员的访问令牌。如果我们使用相应用户的访问令牌,则会发生 403 禁止。

© www.soinside.com 2019 - 2024. All rights reserved.