def _get_authentication_url(self, server_url): token_params = { 'deviceId': self._manager.get_device_id(), 'applicationName': self._manager.get_appname(), 'permission': TOKEN_PERMISSION, } device_description = DEVICE_DESCRIPTIONS.get(sys.platform) if device_description: token_params['deviceDescription'] = device_description # Force login in case of anonymous user configuration token_params['forceAnonymousLogin'] = '******' return server_url + DRIVE_STARTUP_PAGE + '?' + urlencode(token_params)
def request_token(self, revoke=False): """Request and return a new token for the user""" base_error_message = ( "Failed to connect to Nuxeo server %s with user %s" " to acquire a token" ) % (self.server_url, self.user_id) parameters = { 'deviceId': self.device_id, 'applicationName': self.application_name, 'permission': TOKEN_PERMISSION, 'revoke': 'true' if revoke else 'false', } device_description = DEVICE_DESCRIPTIONS.get(sys.platform) if device_description: parameters['deviceDescription'] = device_description url = self.server_url + 'authentication/token?' url += urlencode(parameters) headers = self._get_common_headers() cookies = self._get_cookies() log.trace("Calling %s with headers %r and cookies %r", url, headers, cookies) req = urllib2.Request(url, headers=headers) try: token = self.opener.open(req, timeout=self.timeout).read() except urllib2.HTTPError as e: if e.code == 401 or e.code == 403: raise Unauthorized(self.server_url, self.user_id, e.code) elif e.code == 404: # Token based auth is not supported by this server return None else: e.msg = base_error_message + ": HTTP error %d" % e.code raise e except Exception as e: if hasattr(e, 'msg'): e.msg = base_error_message + ": " + e.msg raise cookies = self._get_cookies() log.trace("Got token '%s' with cookies %r", token, cookies) # Use the (potentially re-newed) token from now on if not revoke: self._update_auth(token=token) return token