Crowd scripting synchronization
Asked by Richard Heasman:

Does anyone have a solution for being able to synchronize directories in crowd prgrammatically? It can be over HTML, on the commandline in BASH, anything. We need to have a sync called immediately as part of an integrated workstream and a delay waiting for a scheduled/regular sync is not acceptable.


Answers:
author: Gaurav
body: Hi [@Richard Heasman](/t5/user/viewprofilepage/user-id/3090572)

Right now there is no such REST API available in Crowd, but speaking technically you can do it using HTML manipulation, and hitting a certain URL.

I cannot provide you details about above both, but you can check out you Crowd's directory view, and capture the request which it makes to backend, when you hit 'Synchronize'

Thanks,

Gaurav Agarwal

comments: author: Richard Heasman
body: Thanks Gaurav. I have been trying to do this for some time; each time I hit the URL I get a login error. I have set up cookies / sessions / all manner of authentication and still cannot get this authorised. Do you have any idea about authorising this call?

Thanks for your response


author: Gaurav
body: Hi [@Richard Heasman](/t5/user/viewprofilepage/user-id/3090572)

Can you paste the HAR files of the request that you are making, so that I can inspect and tell you what's wrong.


author: Richard Heasman
body: curl -X GET -u "adminUsr:adminPW" --silent --output /dev/null -c - '<https://jiraURL.com/login>' --insecure

Output is:

# Netscape HTTP Cookie File  
# <http://curl.haxx.se/docs/http-cookies.html>  
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_domain.com FALSE /jira FALSE 0 JSESSIONID JSESSVALUE  
#HttpOnly_.domain.com TRUE / FALSE 0 crowd.token_key CTOKENVALUE  
domain.com FALSE /jira FALSE 0 atlassian.xsrf.token AXTOKENVALUE

Then using those values:

<br />

curl -X POST -H "Accept: application/json" -b 'JSESSIONID=$JSESSVALUE;crowd.token_key=$CTOKENVALUE;atlassian.xsrf.token=$AXTOKENVALUE' '[https://crowdURL.com/crowd/console/secure/directory/synchconnectorcache!execute.action?ID=6553602\&atl_token=$CTOKENVALUE](https://crowdURL.com/crowd/console/secure/directory/synchconnectorcache!execute.action?ID=6553602&atl_token=$CTOKENVALUE)' --insecure


author: Gaurav
body: Hi [@Richard Heasman](/t5/user/viewprofilepage/user-id/3090572) ,

One problem, that I can spot right away is that you are logging in to Jira, but using the JSESSIONID, and AXTOKENVALUE of Jira in Crowd.

It will not work, Crowd is a separate web application, you can use the CTOKENVALUE given by **Jira** to login to Crowd, but you would need to get the HTML page of directory view in **Crowd**, and then capture the XSRF token and JSESSIONID from this page's cookies header, and then use it in the final call you are making.

Thanks,

Gaurav


author: Richard Heasman
body: Thanks Guarav - yes I know it points at JIRA, I found another post to indicate this was the way to go.. Ok then - following your guidance, I've tried this:

curl -X GET -u "adminUsr:adminPW" --silent --output /dev/null -c - 'https://CrowdURL/crowd/console/secure/directory/synchconnectorcache' --insecure

response:  
# Netscape HTTP Cookie File  
# <http://curl.haxx.se/docs/http-cookies.html>  
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_DOMAIN.COM FALSE /crowd FALSE 0 JSESSIONID JSESSVALUE

curl -X POST -H "Accept: application/json" -b 'JSESSIONID=$JSESSVALUE 'https://CrowdURL/crowd/console/secure/directory/synchconnectorcache!execute.action?ID=6553602\&atl_token=$JSESSVALUE' -vvv --insecure

Still nothing.

I accept I'm a little green in the web transfer area - would you be able to give me an example?


Tags: crowd-administration

server