Authorization using setting 'token_refresh_cmd' not working
henning410 opened this issue · 2 comments
Description
I tried to use Authorization with JWT. Therefore, my settings.json file looks like:
{
"per_resource_settings": {},
"max_combinations": 20,
"authentication": {
"token": {
"token_refresh_cmd": "python3 getNewToken.py",
"token_refresh_interval": 60
}
}
}
In the documentation, there is not really specified how the file getNewToken
should look like.
Currently, this file calls my POST /login endpoint, which returns the valid JWT. Then, the script prints this out.
The script itself is working. But I think, I should need to return the JWT in some other format?
import json
import requests
# Function to get the token from the login endpoint
def get_token():
url = "http://localhost:3000/login"
# Replace with your actual login credentials if required
login_data = {
"username": "john_doe",
"password": "password1234"
}
response = requests.post(url, data=login_data)
if response.status_code == 200 or response.status_code == 201:
# Assuming the token is in the 'token' field of the JSON response
return response.json().get("access_token")
else:
print(f"Failed to get token: {response.status_code} - {response.text}")
return None
# Get the token from the login endpoint
token = get_token()
if token:
print(f"Authorization: Bearer {token}")
else:
print("Could not retrieve the token.")
Steps to reproduce
All files are mentioned in my Description
Expected results
I expect everything to work and RESTler takes the correct Authorization header
Actual results
Authentication failed when refreshing token:
Using Token authentication method:
TokenAuthMethod.CMD
with error unterminated string literal (detected at line 1) (<unknown>, line 1)
Authentication failed when refreshing token:
Using Token authentication method:
TokenAuthMethod.CMD
with error unterminated string literal (detected at line 1) (<unknown>, line 1)
Authentication failed when refreshing token:
Using Token authentication method:
TokenAuthMethod.CMD
with error unterminated string literal (detected at line 1) (<unknown>, line 1)
Authentication failed when refreshing token:
Using Token authentication method:
TokenAuthMethod.CMD
with error unterminated string literal (detected at line 1) (<unknown>, line 1)
Authentication failed when refreshing token:
Using Token authentication method:
TokenAuthMethod.CMD
with error unterminated string literal (detected at line 1) (<unknown>, line 1)
2024-06-10 14:50:57.390: Generation: 1
2024-06-10 14:50:57.640: Terminating garbage collection. Waiting for max 300 seconds.
Done.
Environment details
No response
Okay, got it working by using
"authentication": {
"token": {
"token_refresh_cmd": "/usr/bin/python3 /home/user/Desktop/restler-tests/getNewToken.py",
"token_refresh_interval": 60
}
}
Also in my script, I added some print, so the script produces the following output:
{"id":{}}
Authorization: Bearer <My_Token>
At this point, PLEASE adjust the documentation. There are so many issues about authentication in this Repo, I only got the solution by searching through all issues.
Plus one to updating the docs. This tool is fantastic but is rough around the edges. I also had to search the issues and the web to figure out how auth and a bunch of other features work.