Zeppelin在使用RESTAPI进行身份验证后重新启动解释器

Zeppelin在使用RESTAPI进行身份验证后重新启动解释器,rest,curl,apache-zeppelin,Rest,Curl,Apache Zeppelin,我正在管理齐柏林飞艇服务器,我正在尝试使用RESTAPI调用重新启动齐柏林飞艇解释器。我已打开身份验证。因此,我试图首先在登录api中获取sessionID,然后将其传递给下一个PUT请求以重新启动解释器 以下是我要遵循的步骤 正在获取会话ID: curl -i --data 'userName=admin&password=admin123' -X POST http://zeppelin-server.com:8055/api/login 答复: HTTP/1.1 200 OK

我正在管理齐柏林飞艇服务器,我正在尝试使用RESTAPI调用重新启动齐柏林飞艇解释器。我已打开身份验证。因此,我试图首先在登录api中获取sessionID,然后将其传递给下一个PUT请求以重新启动解释器

以下是我要遵循的步骤

正在获取会话ID:

curl -i --data 'userName=admin&password=admin123' -X POST http://zeppelin-server.com:8055/api/login
答复:

 HTTP/1.1 200 OK
 Date: Tue, 08 Aug 2017 15:09:14 GMT
 Access-Control-Allow-Credentials: true
 Access-Control-Allow-Headers: authorization,Content-Type
 Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, HEAD, DELETE
 Date: Tuesday, August 8, 2017 11:09:14 AM EDT
 Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Mon, 07-Aug-2017 15:09:14 GMT
 Set-Cookie: JSESSIONID=438b05e7-1a9a-4cbe-aa06-1c3dfv454976; Path=/; HttpOnly
 Set-Cookie: JSESSIONID=deleteMe; Path=/; Max-Age=0; Expires=Mon, 07-Aug-2017 15:09:14 GMT
 Set-Cookie: JSESSIONID=f404ad12-a21b-4c6c-bcde-d4f8b59c076a; Path=/; HttpOnly
 Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Mon, 07-Aug-2017 15:09:14 GMT
 Content-Type: application/json
 Date: Tue, 08 Aug 2017 15:09:14 GMT
 Content-Length: 123
 Server: Jetty(9.2.15.v20160210)

 {"status":"OK","message":"","body":{"principal":"admin","ticket":"f329g1cc-d488-4aef-9b89-6b206ee71496","roles":"[admin]"}}
 HTTP/1.1 302 Found
接下来,我将JSESSIONID传递给PUT请求以重新启动解释器

 curl -v -i -b 'JSESSIONID=438b05e7-1a9a-4cbe-aa06-1c3dfv454976; Path=/; HttpOnly' -X PUT http://zeppelin-server.com:8055/api/interpreter/setting/restart/2CGBW7NIF
答复:

 HTTP/1.1 200 OK
 Date: Tue, 08 Aug 2017 15:09:14 GMT
 Access-Control-Allow-Credentials: true
 Access-Control-Allow-Headers: authorization,Content-Type
 Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, HEAD, DELETE
 Date: Tuesday, August 8, 2017 11:09:14 AM EDT
 Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Mon, 07-Aug-2017 15:09:14 GMT
 Set-Cookie: JSESSIONID=438b05e7-1a9a-4cbe-aa06-1c3dfv454976; Path=/; HttpOnly
 Set-Cookie: JSESSIONID=deleteMe; Path=/; Max-Age=0; Expires=Mon, 07-Aug-2017 15:09:14 GMT
 Set-Cookie: JSESSIONID=f404ad12-a21b-4c6c-bcde-d4f8b59c076a; Path=/; HttpOnly
 Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Mon, 07-Aug-2017 15:09:14 GMT
 Content-Type: application/json
 Date: Tue, 08 Aug 2017 15:09:14 GMT
 Content-Length: 123
 Server: Jetty(9.2.15.v20160210)

 {"status":"OK","message":"","body":{"principal":"admin","ticket":"f329g1cc-d488-4aef-9b89-6b206ee71496","roles":"[admin]"}}
 HTTP/1.1 302 Found
当我关闭身份验证时,我没有得到json响应状态

谁能指出我做错了什么。我是按照这里的指示做的


嘿,之所以会得到302 Found代码,是因为您刚刚提供了半个Cookie。在您的示例中,旋度应该是:

 curl -v -i -b 'JSESSIONID=f404ad12-a21b-4c6c-bcde-d4f8b59c076a; Path=/; HttpOnly; rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Mon, 07-Aug-2017 15:09:14 GMT' -X PUT http://zeppelin-server.com:8055/api/interpreter/setting/restart/2CGBW7NIF

这对我很管用。希望这对你也有帮助

我通过使用-c参数(用于存储cookie)和-b(用于恢复和发送)解决了这个问题

请查看随附的我的示例代码:

#Get credentials
curl  --data 'userName=user1&password=user1' -c cookies.txt -XPOST http://$IP:8080/api/login
...
#Use credential to get list of notebooks
curl -b cookies.txt -XGET http://<server>:8080/api/notebook
#获取凭据
curl--data'userName=user1&password=user1'-c cookies.txt-XPOST http://$IP:8080/api/login
...
#使用凭据获取笔记本的列表
curl-b cookies.txt-XGET http://:8080/api/notebook
我希望这对你有帮助

问候