When attempting to create a portal user we are receiving an error message:
{
"error": {
"code": 500,
"message": "java.lang.Exception: The server at '<SERVER URL>' returned an error. Invalid token. []",
"details": null
}
}
I saw this message but adding the referer didn't make a difference. The set up is exactly the same except we are using 10.6.
https://community.esri.com/thread/212042-invalid-token-for-portaladminsecurityuserscreateuser
def generate_portal_token(self, use_referer):
url = self.portal_url + self.rest_path + "/generatetoken"
payload = {}
if use_referer:
payload["client"] = "referer"
payload["referer"] = self.portal_url
else:
payload["client"] = "requestip"
payload["Username"] = self.username
payload["Password"] = self.password
payload["expiration"] = 60
payload["f"] = "json"
headers = {
'Content-Type': "application/x-www-form-urlencoded",
'cache-control': "no-cache"
}
response = requests.request(
"POST", url, data=payload, headers=headers, verify=False)
print(response.text)
token_data = json.loads(response.text)
return token_data["token"]
def create_portal_user(self, user):
url = self.portal_url + "/portaladmin/security/users/createUser"
referer_token = self.generate_portal_token(True)
payload = {}
payload["firstname"] = user["firstname"]
payload["lastname"] = user["lastname"]
payload["password"] = user["password"]
payload["level"] = user["level"]
payload["email"] = user["email"]
payload["role"] = user["role"]
payload["provider"] = "arcgis"
payload["description"] = "test user"
payload["f"] = "json"
payload["token"] = referer_token
payload["referer"] = self.portal_url
headers = {
'Content-Type': "application/x-www-form-urlencoded",
'cache-control': "no-cache"
}
response = requests.request(
"POST", url, data=payload, headers=headers, verify=False)
print(response.text)
response_data = json.loads(response.text)
return response_data
If I don't use the referer then I get error 498 invalid token.
Any ideas what I am doing wrong?