Hello,
I am using Behaviour Select List Conversions which is described here https://scriptrunner.adaptavist.com/4.3.5/jira/behaviours-conversions.html.
I want to make a field that will allow me to select Test Cycle in Test Plan (SynapseRT Plugin). To ask about those cycles I can use SynapseRT REST API "Get Test Cycles in a Test Plan" (GET /rest/synapse/latest/public/testPlan/{testPlanIssueKey}/cycles).
Thus I need to make external api call which in fact is internal because baseURL and credentials I need to provide are the same like in Jira.
Currently in my Rest-Endpoint code I am using basicAuth:
def url = new URL("$jiraBaseUrl/rest/synapse/latest/public/testPlan/$planKey/cycles")
def urlConnection = url.openConnection();
urlConnection.setRequestProperty("Authorization", jiraCredentials)
urlConnection.connect()
Is there any way to get rid of hard-coded credentials?
I have also some rest-endpoints which connects with bamboo and I see possibilities to do calls as logged in user... so i belive that there is also possiblitiy to do sth similar wtih Jira - Jira like in Jira - Bamboo.
In Jira-Bamboo Rest-Endpoint i do requests with such auth:
// Integration & Auth Info
def techUser = ComponentAccessor.jiraAuthenticationContext.setLoggedInUser(ComponentAccessor.getUserManager().getUserByName("jira-test-user"))
def appLinkService = ComponentLocator.getComponent(ApplicationLinkService)
def appLink = appLinkService.applicationLinks.findAll{it -> it.name.toString()=="BambooPRE"}
ApplicationLink bambooAppLink = appLink?.getAt(0)
def applicationLinkRequestFactory = bambooAppLink.createAuthenticatedRequestFactory()
Hi Rafal!
Have you found a solution for this? I am also using REST calls from Jira to Confluence through the applink without hardcoded credentials but I need a REST call from Jira to itself....
Best regards
Andreas
Hi @Andreas,
can you tell me how you are using REST calls from Jira to Confluence through the applink without hardcoded credentials? I didn't find a way yet and I would need it to make a REST call from Jira to Bitbucket (with the currently logged-in User).
Kind regards,
Hamza
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Hamza
I use the script like this:
def jiraAuthenticationContext = ComponentAccessor.getJiraAuthenticationContext()
def userManager = ComponentAccessor.getUserManager()
def currentUser = jiraAuthenticationContext.getLoggedInUser()
def adminUser = userManager.getUserByName("admin123")
//jiraAuthenticationContext.setLoggedInUser(adminUser)
def confluenceLink = getPrimaryConfluenceLink()
def authenticatedRequestFactory = confluenceLink.createImpersonatingAuthenticatedRequestFactory()
// Copy Space
authenticatedRequestFactory
.createRequest(Request.MethodType.POST, "/rest/scriptrunner/latest/canned/com.onresolve.scriptrunner.canned.confluence.admin.CopySpace")
.setSoTimeout(30000)
.addHeader("Content-Type", "application/json")
.setRequestBody(input)
.execute(new ResponseHandler<Response>() {
@Override
void handle(Response response) throws ResponseException {
if(response.statusCode != HttpURLConnection.HTTP_OK) {
throw new Exception(response.getResponseBodyAsString())
}
else {
def webUrl = new JsonSlurper().parseText(response.responseBodyAsString)
}
}
}
)
def ApplicationLink getPrimaryConfluenceLink() {
def applicationLinkService = ComponentLocator.getComponent(ApplicationLinkService.class)
final ApplicationLink conflLink = applicationLinkService.getPrimaryApplicationLink(ConfluenceApplicationType.class)
conflLink
}
The current user is set in the jiraAuthenticationContext. This is also the user who executes the REST request.
I have also a scenario where I have to set the logged in user to an admin user (this line is commented)
Best regards
Andreas
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Andreas ,
thanks for your answer.
I'm still not getting how to replace the authentication to use the current user.
Heres my code to generate a Pull request from Jira Datacenter to a linked Bitbucket Datacenter.
//User
def authString = username + ":" + password;
byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
String authStringEnc = new String(authEncBytes);
// API POST Create Pull Request
def baseBitbucketURL = "{Bitbucket-URL}"
url2 = new java.net.URL(baseBitbucketURL);
try {
URLConnection connection = url2.openConnection();
connection.setRequestProperty("Authorization", "Basic "+ authStringEnc);
connection.setRequestMethod("POST");
connection.setRequestProperty("Accept", "*/*");
connection.setRequestProperty("Content-Type", "application/json")
connection.setDoOutput(true);
connection.outputStream.withWriter("UTF-8") { new StreamingJsonBuilder(it, jsonBody1) }
connection.connect();
inputStream = connection.getInputStream().getText()
result = slurper.parseText(inputStream)
log.info ("URL="+url+"Status="+connection.getResponseCode() as String)
}
catch(Exception e)
{ log.error("Fehler: " + e.toString())}
Can you tell me how I could replace the hard coded Username and password in this case?
Kind regards,
Hamza
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Hamza,
Are you able to call REST api without using hardcoded basic credential.
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.