Quantcast
Channel: Active questions tagged bmc - Stack Overflow
Viewing all articles
Browse latest Browse all 127

Passing JWT in request header not working in groovy script

$
0
0

I am trying to access CI data from CMDB(BMC atrium) via groovy script and it goes in two steps.

First to send a POST request to login api and get the authorization token.

Second to use this token in subsequent api calls.

I have tested both the APIs in postman and they are working fine.

The part of fetching the token is working fine in groovy script but for the part of fetching CI data using this token is returning error json :

"JsonResponse is[{"messageType":"ERROR","messageText":"A user name must be supplied in the control record","messageAppendedText":null,"messageNumber":149}]"

Here is the funny part, I went back to postman and in the authorization header I just placed a freshly generated token and it gave me the same error json as mentioned above. And when I appended "AR-JWT" with the token value in the authorization header - it worked fine!

I have tried passing different values in the header like - AuthenticationInfoValue.authentication = username , Authorization-Type , username and password etc. but nothing seems to work.

I have checked the official BMC site for documentation but according to it I am doing everything right.If someone can point out what I am doing wrong, it would be really helping.

here is the groovy script

    @Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7')    //post call to get the token    def token    def httpRequester = new     groovyx.net.http.HTTPBuilder("http://<localhost>:<port>/api/jwt/login");    httpRequester.request(groovyx.net.http.Method.POST) { req ->    requestContentType = groovyx.net.http.ContentType.URLENC    body = [username:'user', password:'pass']    response.success = { resp , reader ->                    println "response success"                    httpResponse = resp                    println "httpResponse : "+httpResponse                    token = reader.getText()                    println "token : "+token                }                response.failure = { resp , reader ->                    println "response failure"                    httpResponse = resp                    println "httpResponse : "+httpResponse                    token = reader.getText()                      println "token : "+token                                   }            }    //Get call to fetch the CI Data    httpRequester = new groovyx.net.http.HTTPBuilder("http://<localhost>:<port>/api/arsys/v1/entry/AST:ComputerSystem")    def finalToken = "AR-JWT"+""+ token ;    httpRequester.request(groovyx.net.http.Method.GET) { req ->    println "Inside request"    def headerMap = ['Content-Type': 'application/x-www-form-urlencoded' , 'Authorization': finalToken]    httpRequester.setHeaders(headerMap)    println "headers  :  "+httpRequester.getHeaders()    requestContentType = groovyx.net.http.ContentType.URLENC    response.success = { resp, json ->                    println "response success"                    httpResponse = resp                    jsonResponse = json                }                response.failure = { resp, json ->                    println "response failure"                    httpResponse = resp                    jsonResponse = json                }            }            jsonResponse = new groovy.json.JsonBuilder(jsonResponse);            println "JsonResponse is"+jsonResponse.toString();

Viewing all articles
Browse latest Browse all 127

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>