Authorization Code via cURL (cmd)
The authorization code using Client for URLs (cURL) to obtain access tokens and refresh tokens.
To authorize code using cURL:
-
Get the user's authorization. Open cURL and set the following variables in it:
-
set RIM_URL= {https://hostname} set CLIENT_ID = {clientId} set CLIENT_SECRET = {clientSecret} set TENANT_ID = {tenantId) set REDIRECT_URL= {redirect_url} set RIM_TOKEN_URL= %RIM_URL% /insight/api/v2/token set SCOPE = openid %CLIENT_ID%/.default offline_access set ENDPOINT = https://login.microsoftonline.com/%TENANT_ID%/oauth2/v2.0/authorize set URL= %ENDPOINT%?client_id=%CLIENT_ID%^&response_type=code^&scope=%SCOPE% ^&redirect_uri=https://oauth.pstmn.io/v1/callback^&state=12345 set TOKEN_URL= https://login.microsoftonline.com/ % TENANT_ID %/ oauth2/v2.0/token
-
-
Get the Authorization Code. To do it, send the following request via cURL:
-
@REM start microsoft-edge:"%URL%" -
start chrome "%URL%"
Note: Alternatively, you can send the request via browser by entering the authorization URL into the search line.After receiving your request, the authorization server send you a redirect URI that contain your authorization code. Example:echo "Visit the following URL to authorize the application:" "%URL%"Note: Make sure you use correct redirect URL configured in the Application registration. -
-
Set the code from redirect URI by adding it to the following request:
set /p AUTH_CODE="Enter Code displayed in browser: " -
Exchange Authorization Code with an access token:
-
curl-X POST-H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=authorization_code&code%AUTH_CODE% &redirect_uri= %REDIRECT_URL%&client_id=%CLIENT_ID%" %TOKEN_URL%
If everything is done correctly, an AzureBearerBody Token utilised in conjunction with the API X-CSRF-TOKEN access token is generated. -
-
Submit an HTTPS GET request to
http://hostname:port/insight/api/v2/token to receive generated token.
You will get the server response containing your token and the current session ID:{ "token": "F1AE44E28CB43CDECB2D0A104EB5DF4B" }. The header of the response must include following values:
- X-CSRF-HEADER → X-CSRF-TOKEN
- X-CSRF-PARAM → _csrf
- X-CSRF-TOKEN → 40d67d97-fb28-4a78-a111-5bae0ee706bb
-
Use the received token and login information to get authenticated. Send a login POST-request to pass authentication. Use the same session (set JSESSIONID):
- URI: http://hostname:port/insight/api/v2/login
- Request header values:
- Content-Type: "application/json"
- X-CSRF-TOKEN: 40d67d97-fb28-4a78-a111-5bae0ee706bb - This value is retrieved as a result of the previous request. (http://hostname:port/insight/api/v2/token )
- Request body (raw): {{AzureBearerBody}} - This is the is the Azure Generated Authorisation Token gathered in previous steps.
-
After successful login, the application creates a new session and a new token to use in subsequent API calls. The response header must contain the following values:
- X-CSRF-HEADER → X-CSRF-TOKEN
- X-CSRF-PARAM → _csrf
- X-CSRF-TOKEN → c3cc7d40-348e-410c-bcb6-bc0accdfaff5
-
Make an API call with your new token. All subsequent REST API POST-requests (read/create/create-or-update/delete for a specific entity) should be sent through "/api/v2" URI (Example:
http://hostname:port/insight/api/v2/event/46098/delete or
http://hostname:port/insight/api/v2/product-family/all ) with the following attributes:
- Request header values:
- Content-Type: "application/json"
- X-CSRF-TOKEN: c3cc7d40-348e-410c-bcb6-bc0accdfaff5
- Request body: JSON object for the specific entity.
Instead of X-CSRF-TOKEN header, you can use the "_csrf" parameter. - Request header values:
- Get the CSRF token by submitting the following request via cURL: curl GET %RIM_TOKEN_URL% -v
-
Set variables for login request
- set X-CSRF-TOKEN={ enter the value retrieved during the previous request for X-CSRF-TOKEN }
- set RIM_TOKEN= {enter the value retrieved during for the previous request xAuthToken }
-
set DATA="{{AzureBearerBody}} "
CURL may require the nested quotas to be escaped. Example:Set DATA= {\"token_type\":\"Bearer\",\"access_token\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjVCM25SeHRRN2ppOGVORGMzRnkwNUtmOTdaRSIsImtpZCI6IjVCM25SeHRRN2ppOGVORGMzRnkwNUtmOTdaRSJ9.eyJhdWQiOiJiZWIwMzc0OC1lMDQxLTRlMzAtOGQxZC1iNTI1YzhhZGMwOGMiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83OWU4MTNlMi1mNGIyLTRlZmItYjA4Yi1iMzZmMzc5ODM1MDEvIiwiaWF0IjoxNzA1NDI0NzM3LCJuYmYiOjE3MDU0MjQ3MzcsImV4cCI6MTcwNTQyNTYzNywiYWNyIjoiMSIsImFpbyI6IkFUUUF5LzhWQUFBQTJUL1lpRXhXem8zdGhvZVJmRisvRkUrNkhiS0M5eWdoSHVrRHVzZ3ZsN29PNmx5RTM5UjNIdnFlUjZBVkVHUEUiLCJhbXIiOlsicHdkIl0sImFwcGlkIjoiYmViMDM3NDgtZTA0MS00ZTMwLThkMWQtYjUyNWM4YWRjMDhjIiwiYXBwaWRhY3IiOiIwIiwiaXBhZGRyIjoiNTIuMTg0LjI1My4xNCIsIm5hbWUiOiJJbnNJbXJVc2VyMSIsIm9pZCI6Ijk1YmM2MzRiLWY4NmItNDJiZC1hMTBjLTBmMTA4NThmNzFmZCIsInJoIjoiMC5BU2dBNGhQb2ViTDAtMDZ3aTdOdk41ZzFBVWczc0w1QjREQk9qUjIxSmNpdHdJelpBR1kuIiwic2NwIjoiTWFpbC5SZWFkIFVzZXIuUmVhZCIsInN1YiI6Ims4elRKcnQ3d0xRYUstem93Q0lEZFJkNm9jb1BWTEExNUVOY2t6cm5yUlUiLCJ0aWQiOiI3OWU4MTNlMi1mNGIyLTRlZmItYjA4Yi1iMzZmMzc5ODM1MDEiLCJ1bmlxdWVfbmFtZSI6Ikluc0ltclVzZXIxQHJpbXNzb3BvYy5vbm1pY3Jvc29mdC5jb20iLCJ1cG4iOiJJbnNJbXJVc2VyMUByaW1zc29wb2Mub25taWNyb3NvZnQuY29tIiwidXRpIjoiVzVFb2gtczhqa0dHbEtyMDZ6V2NBQSIsInZlciI6IjEuMCJ9.Pg0wC99ON6Cgu1z6_h4jGcgllsK74s0sqCI1C_a3S7uMurrdxXToG6y_anqgmVZdES2hPCfPOIci3p_SJIqIrLGl_0qy42iQVx4VZ_aywYPmrAIilkUTRd78yODRLFnHocC21S7bzPX0ZzD24hNZP3ozw6b_8zZcGKGCqvQ8VDGmVcM8eDU_108rmDz3Bfd3vMtpBJrscusTd-tyoxunrZJF-taXQL1ZZEKytmbkrN2hylcyNoRuRhTz-5Uae2P0QyWUbAy3XfueTV5-ha98Cq81wUoa-fAjDnunC4RPCTT4Khnd94kIvI8_I7OqiXmr0vcBb3QAGnQOg9JBLnA8jw\",\"refresh_token\":\"0.ASgA4hPoebL0-06wi7NvN5g1AUg3sL5B4DBOjR21JcitwIzZAGY.AgABAAEAAAAmoFfGtYxvRrNriQdPKIZ-AgDs_wUA9P9pLd27F_-gDI59QVqVeY_iIWIt33wtMSAR8gvVkhNBqhx2nOqTPx2Q9HyOm3twaJdgfM0OI2VnTre00Qjv4NS540wVyfn3Rme-pwXrEzoieHA6sSos0L_PN6TB8KPCcXWq7Donx9lt6Zv0scNREMfkSufTL_HkrLyNbfV2xzikp80tsYW2d-V6LNh6q4qnv7LBuv0BdFmM7xar4hBYV6WNjhwy1WQoyzZROcIUVtyojM3qccOk2Q-0whuNZLb4kwthuQ6WSNoeueO1sE0PCPCKk5-kuunN_XTlR0tz92F4e5l2oFy6yowx6Sz5DLkdzuvg8VG7zW2aunjZ77IUdBSq94I_dh5-Qh46zc0Sn8p3jfJL68YTLmUVXxu_BNW1saXZjP700-fHIM4ejNedUH0MZ5LketsgxymwSkscq_6qOUzZ2ILp85KNv0gEznKmZsvDLGakfXFGtYggTLLiYpb9o7Jf3DX-tHW0No8lRia3Vmh4RUXl86PyeXSFe-3MgTB_f3c0VL5D9gqI4UMOlxRrWL7gY9COeGW6JMYyLw2to0Ic5POJyoaovGD7sXj3wt0ZuC3G5xF-KzxltaoiGp3TpyfuLwuwphehq95Q2JtL42yxFwumvgJnLZiwe61ic2wO_eRuXjLAHa9qkDFCPkIG8zXNt4I-CWM2pF4bdSwSDfx01eDv9OYfu55c4qyiO0TIPBg3-FP54W2Zj9kXnp0zNdqbjT5s\",\"id_token\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjVCM25SeHRRN2ppOGVORGMzRnkwNUtmOTdaRSJ9.eyJhdWQiOiJiZWIwMzc0OC1lMDQxLTRlMzAtOGQxZC1iNTI1YzhhZGMwOGMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzllODEzZTItZjRiMi00ZWZiLWIwOGItYjM2ZjM3OTgzNTAxL3YyLjAiLCJpYXQiOjE3MDU0MjIwMDgsIm5iZiI6MTcwNTQyMjAwOCwiZXhwIjoxNzA1NDIyOTA4LCJhaW8iOiJBVFFBeS84VkFBQUFzTlZmbmJjVWVHVFYrZGxSNzlwUHFlK29RbjZkNkZLZG9CNUtCbDgwemVoeEVQZkhYcE5iVUxPMUdwTTZ2VUU3IiwicmgiOiIwLkFTZ0E0aFBvZWJMMC0wNndpN052TjVnMUFVZzNzTDVCNERCT2pSMjFKY2l0d0l6WkFHWS4iLCJzdWIiOiJrOHpUSnJ0N3dMUWFLLXpvd0NJRGRSZDZvY29QVkxBMTVFTmNrenJuclJVIiwidGlkIjoiNzllODEzZTItZjRiMi00ZWZiLWIwOGItYjM2ZjM3OTgzNTAxIiwidXRpIjoiNngxTEdfaDlEazZYckRvdU9hQ25BQSIsInZlciI6IjIuMCJ9.3mmf_KH-ykTB8BkbgBGBoigWv_jgsps8WAeiNqDBmEB3qIdnrkPauORUwHk74qWN4vSv38bJ6UmUPgHA_VYSVpy2KjlhNBtYhR2_kk0D_cv2GB7FGTb8nVg5bQP4GOSd7erZsN5TnG-GJevsdOw-yLzQRX6NZRy6EnR0MWgnjRdhdybl-IVRKC6PIVbZKSm9ReL3-wdS8faACOtvBB5aVkc8MWF6RmqC1nyD7e1zVNYQj5S-RJRrrLOHjtQItFO_WqIb1c3cmzYskSrwwhBfe0AxDh1I7d6lQT00Gf9LoCO6ykgRhNPw14ugAI2OsFOdT9N4Yop7ClGafjwx4Ub5yw\"}" - Get RIM session: curl -X POST -H "X-CSRF-TOKEN: %X-CSRF-TOKEN%" -H "Content-Type:application/json" -b "JSESSIONID=%RIM_TOKEN%" -d %DATA% %LOGIN_URL% -v
-
Now, you can execute API call with authenticated session:
- set GET_PF_URL=%RIM_URL%/insight/api/v2/product-family/all
- curl -X POST -H "X-CSRF-TOKEN: %X-CSRF-TOKEN%" -H "Content-Type:application/json" -b "JSESSIONID=%RIM_TOKEN%" -d %DATA% %GET_PF_URL% -v