首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Barracuda REST和Ansible - token身份验证不起作用

使用Barracuda REST和Ansible - token身份验证不起作用
EN

Stack Overflow用户
提问于 2017-01-16 22:37:23
回答 1查看 1.3K关注 0票数 2

我正在尝试使用REST由梭鱼ADC和/或WAF提供,当我使用cURL (从文档中)时,它可以工作:

请求:

代码语言:javascript
复制
$ curl
-X POST \
-H "Content-Type:application/json" \
-d '{"username": "admin", "password": "admin"}' \ http://10.11.19.104:8000/restapi/v2/login

响应:

{"token":"eyJldCI6IjEzODAyMzE3NTciLCJwYXNzd29yZCI6ImY3NzY2ZTFmNTgwMzgyNmE1YTAzZWZlMzcy\nYzgzOTMyIiwidXNlciI6ImFkbWluIn0=\n"}

然后我们应该使用该令牌在API上执行命令,如下所示:

代码语言:javascript
复制
$ curl
-X GET \
-H "Content-Type:application/json" \ 
-u 'eyJldCI6IjEzODAyMzE3NTciLCJwYXNzd29yZCI6ImY3NzY2ZTFmNTgwMzgyNmE1YTAzZWZlMzcy\nYzgzOTMyIiwidXNlciI6ImFkbWluIn0=\n': \
http://10.11.19.104:8000/restapi/v2/virtual_service_groups

它将给我一个响应列表(在本例中)我的虚拟服务组,它与cURL一起工作。

现在,当我尝试使用ansible做同样的事情时,验证的第一步就成功了(我甚至可以用cURL使用生成的令牌并接受它),但是使用生成的令牌运行命令的第二步总是会给我401个错误(无效的凭据):

代码语言:javascript
复制
- name: login into the load balancer
  uri:
    url: "{{ barracuda_url }}/login"
    method: POST
    body_format: json
    body:
      username: "{{ barracuda_user }}"
      password: "{{ barracuda_pass }}"
    headers:
      Content-Type: application/json
    return_content: yes
    force_basic_auth: yes
  register: login
  tags: login, debug

- debug: msg="{{ login.json.token }}"
  tags: debug

- name: get
  uri:
    url: "{{ barracuda_url }}/virtual_service_groups"
    method: GET
    body_format: json
    user: "{{ login.json.token }}:"
    headers:
      Content-Type: application/json
    return_content: yes
    force_basic_auth: yes
  register: response

我的剧本输出:

代码语言:javascript
复制
TASK [loadbalancer : login into the load balancer] *****************************
ok: [localhost]

TASK [loadbalancer : debug] ****************************************************
ok: [localhost] => {
    "msg": "eyJldCI9IjE0ODQ2MDcxNTAiXCJwYXNzd29yZCI6IjRmM2TlYWMwN2ExNmUxYWFhNGEwNTU5NTMw\nZGQ3ZmM3IiwiaXNlciI6IndpYSJ9\n"
}

TASK [loadbalancer : get] ******************************************************
fatal: [localhost]: FAILED! => {"changed": false, "connection": "close", "content": "{\"error\":{\"msg\":\"Please log in to get valid token\",\"status\":401,\"type\":\"Invalid Credentials\"}}", "content_type": "application/json; charset=utf8", "date": "Mon, 16 Jan 2017 22:32:30 GMT", "failed": true, "json": {"error": {"msg": "Please log in to get valid token", "status": 401, "type": "Invalid Credentials"}}, "msg": "Status code was not [200]: HTTP Error 401: ", "redirected": false, "server": "BarracudaHTTP 4.0", "status": 401, "transfer_encoding": "chunked", "url": "http://10.11.19.104:8000/restapi/v2/virtual_service_groups"}
EN

回答 1

Stack Overflow用户

发布于 2017-01-16 22:44:19

"{{ login.json.token }}:"中删除user参数中的冒号。使用:

代码语言:javascript
复制
user: "{{ login.json.token }}"

冒号不是用户名的一部分,而是一个curl语法(在您的示例中用于避免交互式密码提示):

-u,--用户 --如果您只是指定用户名,curl将提示输入密码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41686147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档