Keycloak REST API 403 被禁止

Posted

技术标签:

【中文标题】Keycloak REST API 403 被禁止【英文标题】:Keycloak REST API 403 forbidden 【发布时间】:2017-12-01 07:53:53 【问题描述】:

我正在尝试使用 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();
        

    

【问题讨论】:

【参考方案1】:

manage-users 的领域管理角色会给你删除权限。 您可以从角色映射选项卡中的客户端角色下拉列表中选择领域管理。

Manage-users 是一个强大的角色,但它可能会为最终用户提供比您想要的更多的权限。您可以升级其他用户角色,删除任何人等。根据您的要求进行测试。

【讨论】:

【参考方案2】:

您用来访问相应功能的用户需要您的领域的相应权限。

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

【讨论】:

以上是关于Keycloak REST API 403 被禁止的主要内容,如果未能解决你的问题,请参考以下文章

403 使用有效的用户凭据访问 Leycloak REST API 时被禁止

启用 API 身份验证时,Apache 气流 REST API 调用失败并出现 403 禁止

Sharepoint 2013 通过 REST API:尝试创建项目时禁止出现错误 403

Angular js1中的403禁止Rest API(节点js)

S3 REST API HEAD 请求上的 403 禁止错误

Spring Boot - KeyCloak 指向 403 禁止