Hello all I'm using Jira 4.4.
I'm trying to make a plugin that performs some simple jql queryies via RESt.
In order to do so I need to log in Jira with my plug in.
How do I have to do?
I tried in two different way
1) Java Script
<form method="POST"> Username: <input type="text" name="username" /> <br /> Password: <input type="password" name="password" /> <br /> <input type="button" value="Check In" name="Submit" onclick=javascript:login(username.value,"username",password.value,"password") > </form> </form> <script language = "javascript"> function login(username, password) { var url = "http://172.16.1.24/jira/rest/auth/1/session"; var JSONObject = {"username": ""+username+"", "password": ""+password+""}; var client = new XMLHttpRequest(); client.open("POST", url, false); client.setRequestHeader("Content-Type", "application/json"); client.send(JSONObject); if (client.status == 200) alert("The request succeeded!\n\nThe response representation was:\n\n" + client.responseText) else alert("The request did not succeed!\n\nThe response status was: " + client.status + " " + client.statusText + "."); } </script>
And a second one using Java (I'm using Play!Framework)
String wsReq = "{\"username\": \""+username+"\", \"password\": \""+password+"\"}"; HttpResponse response = WS.url("http://172.16.1.24/jira/rest/auth/1/session").setHeader("Content-Type", "application/json").body(wsReq).post();
with the first one I don't get any answer from the server, with second one I'm authenticated but non session information are stored and I cant make any other request.
Somewhere I read that I have to use the session ID in order to make others api calls. But where I put it if, as an example, I point to the url myhost/jira/rest/api/2.0.alpha1/searches
For java, using apache httpclient and json.org reference implementation of JSONObject, i have a jira client.
it has the following class variables:
private DefaultHttpClient httpClient; private HttpHost targetHost; private JiraSession session;
my login function looks like this:
try { HttpPost post = new HttpPost(config.getBaseUrl() + "rest/auth/latest/session"); JSONObject reqContent = new JSONObject(); reqContent.put("username", config.getUserName()); reqContent.put("password", config.getPassword()); StringEntity se = new StringEntity(reqContent.toString()); se.setContentType("application/json"); post.setEntity(se); ResponseHandler<String> responseHandler = new BasicResponseHandler(); String responseBody = httpClient.execute(targetHost, post, responseHandler); JSONObject obj = new JSONObject(responseBody); session = new JiraSession(); session.setName(obj.getJSONObject("session").getString("name")); session.setName(obj.getJSONObject("session").getString("value")); CookieStore cookieStore = new BasicCookieStore(); BasicClientCookie cookie = new BasicClientCookie(obj.getJSONObject("session").getString("name"), obj.getJSONObject("session").getString("value")); cookie.setDomain(targetHost.getHostName()); cookie.setPath("/"); cookieStore.addCookie(cookie); httpClient.setCookieStore(cookieStore); } catch (ParseException | IOException ex) { Logger.getLogger(JiraClient.class.getName()).log(Level.SEVERE, null, ex); }
Then subsequest calls are made as such:
HttpGet get = new HttpGet(config.getBaseUrl() + "rest/api/latest/filter/favourite"); ResponseHandler<String> responseHandler = new BasicResponseHandler(); String responseBody = httpClient.execute(targetHost, get, responseHandler);
Another way (and better way) is to use OAuth. You can find examples here: https://bitbucket.org/atlassian_tutorial/atlassian-oauth-examples
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Could you please re-post the valid URL, since this one is broken :(
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Mladen sure thing... I updated the URL above to https://bitbucket.org/atlassian_tutorial/atlassian-oauth-examples
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi, with above oauth example(https://bitbucket.org/atlassian_tutorial/atlassian-oauth-examples), how can I get the token with login of different user?
actually I got error as follow.
oauth=WWW-Authenticate: OAuth realm="https://example.atlassian.net", oauth_problem="consumer_key_unknown".
I want to register only one of jira link application on my atlassian.net and to access other any atlassian.net via jira api.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
If it's a jira plugin then you will use the user's session data, so logging in should not be necessary. Are you trying to log in as a different user? This is a bad ideas as the user's credentials will be plain view in the source.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I'm trying to use rest to develop a webapp i want to deploy in my company intranet. So, right now, I'm no so much concerned about security
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
For the java one, you should get a JSESSIONID which you can pass as a header in subsequent requests. For javascript, if you are running the javascript in jira, I'm not sure, because the cookie set by the /auth might conflict with jira's auth token.
Try installing the rest browser too, eg: https://jira.atlassian.com/plugins/servlet/restbrowser#/com-atlassian-jira-rest-jira-rest-authentication-filter
Post data: {"username": "jechlin", "password": "******"}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thank you Jamie, so for the Java one if i want to make a jql query with post my lines should be:
String jql = "{\"jql\": \"project = "+project+"\" , \"startAt\": 0, \"maxResults\": 15}"; HttpResponse response = WS.url("http://172.16.1.24/jira/rest/api/2.0.alpha1/search").setHeader("Content-Type", "application/json", "JSESSIONID", jsessionid).body(jql).post();
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.