1

我正在尝试将 100 个用户添加到人群中的一个组中,并且我想使用 curl 和人群的 rest api 来自动化它。起初我只是想将一个单一用户添加到一个组中,然后使用 shell 脚本自动匹配它。按照本文档,我将命令传递为

curl -X POST{"name":"groupname"} -ik -u application:password-H 'Content-Type: application/json' -H 'Accept: application/json' https://localhost/crowd/rest/usermanagement/1/user/group/direct?username=username.

我收到以下错误。

HTTP/1.1 405 Method Not Allowed
Server: Apache-Coyote/1.1
X-Embedded-Crowd-Version: Crowd/2.8.3
X-Crowd-User-Management-Version: 1.4
Set-Cookie: JSESSIONID=17490A660F9A2267B378CD767CEADDF8; Path=/crowd/; Secure; HttpOnly
Allow: HEAD,DELETE,POST,GET,OPTIONS
X-Content-Type-Options: nosniff
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 1013
Date: Mon, 29 Jun 2015 02:56:15 GMT

仅供参考:我正在使用应用程序通过休息对人群进行身份验证。请建议我需要做什么以及我应该怎么做。

PS我还需要想办法增加成百上千的人群。

4

1 回答 1

2

您在 POST 和您的数据之间缺少一个空格。

发布数据使用:

-d,--数据

(HTTP) 将 POST 请求中的指定数据发送到 HTTP 服务器,就像浏览器在用户填写 HTML 表单并按下提交按钮时所做的那样。这将导致 curl 使用内容类型 application/x-www-form-urlencoded 将数据传递给服务器。与 -F、--form 进行比较。

所以命令应该是:

curl -X POST -d {"name":"groupname"} -ik -u application:password -H 'Content-Type: application/json' -H 'Accept: application/json' https://localhost/crowd/rest/usermanagement/1/user/group/direct?username=username

从人群文档,

身份验证 访问所有资源(使用任何方法)需要通过基本身份验证对客户端进行身份验证。请参阅 RFC 2617。

您的环境必须保留 Crowd 服务器设置的 cookie 并在后续调用中重新传输它们,否则 Crowd 必须在每次 REST 调用时重新验证应用程序。

所以首先验证你自己并存储cookies,(记下--cookie-jar参数)

curl -i -u application_name:application_password --data '{"value": "my_password"}' http://localhost:8095/crowd/rest/usermanagement/1/authentication?username=my_username --header 'Content-Type: application/json' --header 'Accept: application/json' --cookie-jar cookies.txt

因此,根据后续调用的文档使用 cookie(使用 --cookie 参数)

curl -X POST -d {"name":"groupname"} -ik -u application:password -H 'Content-Type: application/json' -H 'Accept: application/json' https://localhost/crowd/rest/usermanagement/1/user/group/direct?username=username --cookie cookies.txt
于 2015-06-29T03:50:20.507 回答