【问题标题】:Zeppelin restart interpreter after authentication using REST apiZeppelin 在使用 REST api 进行身份验证后重新启动解释器
【发布时间】:2018-06-01 00:12:25
【问题描述】:

我正在管理一个 zeppelin 服务器,我正在尝试使用 REST api 调用重新启动 zeppelin 解释器。我已开启身份验证。因此,我尝试首先使用登录 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]"}}

接下来,我将 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 302 Found

我没有收到我在关闭身份验证时获得的 json 响应状态。

谁能指出我在这里做错了什么。我按照这里的说明进行操作。

https://community.hortonworks.com/questions/52840/authentication-with-the-zeppelin-rest-api.html

【问题讨论】:

    标签: rest curl apache-zeppelin


    【解决方案1】:

    您之所以获得 302 Found Code 是因为您刚刚提供了一半的 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
    

    这对我有用。希望这对您也有帮助!

    【讨论】:

      【解决方案2】:

      我通过使用 -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
      

      希望对你有帮助。

      问候!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-05
        • 2018-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-05
        相关资源
        最近更新 更多