java.lang.Exception - Invalid token

1794
0
03-08-2019 02:25 AM
MikeButt
New Contributor II

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?

0 Kudos
0 Replies