gpt4 book ai didi

kerberos - Livy REST API : GET requests work but POST requests fail with '401 Authentication required'

转载 作者:行者123 更新时间:2023-12-02 08:04:53 26 4
gpt4 key购买 nike

我已经为 Livy 的 REST API 的一部分编写了一个 Java 客户端,地址为 https://github.com/apache/incubator-livy/blob/master/docs/rest-api.md 。客户端使用 Spring 的 RestTemplate.getForObject()postForObject() 分别发出 GET 和 POST 请求。 Livy 服务器使用 Kerberos 进行保护。

GET /sessionsGET /batches请求工作正常:我从 Livy 那里得到了预期的回复。但两者POST /sessionsPOST /batches请求失败并显示:

org.springframework.web.client.HttpClientErrorException: 401 Authentication required

有谁知道为什么 GET 请求成功时 POST 请求失败?我的代码对身份验证没有做任何明确的事情。

我尝试通过 Kerberos 作为多个不同用户进行身份验证,但总是遇到此问题。 Livy 是否需要额外的配置来允许来自特定用户的 POST 请求(因为 POST 请求有效地创建交互式 session 或向 Spark 提交作业)?

最佳答案

事实证明,虽然常规 org.springframework.web.client.RestTemplate类足以满足 GET 请求,您需要使用 org.springframework.security.kerberos.client.KerberosRestTemplate用于 POST 请求。如果 Livy 服务器启用了 CSRF(跨站点请求伪造)保护(如 here 中所述),您可能还需要向 POST 请求添加额外的 header 。 .

获取/批处理示例

RestTemplate restTemplate = new RestTemplate();
GetBatchesResponse response2 = restTemplate.getForObject("http://your_livy_server:8998" + "/batches", GetBatchesResponse.class);

其中 GetBatchesResponse 是我编写的一个简单的 POJO,代表 response bodyGET/batches

POST/批处理示例

PostBatchesRequest postRequestBody = new PostBatchesRequest();
postRequestBody.setFile("/path/to/your/application"); // In HDFS

KerberosRestTemplate kerberosRestTemplate = new KerberosRestTemplate("path_to_your_key_tab_file", "your_user@your_realm");

// Add CSRF header if required:
HttpHeaders headers = new HttpHeaders();
headers.set("X-Requested-By", "your_user@your_realm");
headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<PostBatchesRequest> postRequest = new HttpEntity<PostBatchesRequest>(postRequestBody, headers);

Batch batch = kerberosRestTemplate.postForObject("http://your_livy_server:8998" + "/batches", postRequest, Batch.class);

其中 PostBatchesRequestBatch 是我编写的用于表示 request body 的 POJO和 response分别。

关于kerberos - Livy REST API : GET requests work but POST requests fail with '401 Authentication required' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46909048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com