Robert Luse
Robert Luse

Reputation: 53

Azure Websites Kudu REST API - Authentication in Python

I am trying to access the Azure Kudu Web API interface to get historical information about my WebJobs. The URL is https://myfakewebappname.scm.azurewebsites.net/api/triggeredwebjobs/HubSpot/history

This works just fine in a browser with a one time (first time you login) user and password authentication.

When I call it with a python script using the requests library, I get a 401 response code and 'WWW-Authenticate': 'Basic realm="site"'. I then send another request:

resp = requests.get('https://myfakewebappname.scm.azurewebsites.net/api/triggeredwebjobs/HubSpot/history', auth=('actualuser', 'actualpassword')). I use the user and Password that work using my browser.

I get the same 401 response code again with the same response.headers. What am I doing wrong?

Upvotes: 2

Views: 601

Answers (1)

Joy Wang
Joy Wang

Reputation: 42063

The Authentication of the WebJobs Kudu API is via basic auth, to call the API successfully in python, please follow the steps below.

1.Navigate to the Azure portal -> your web app which has the webjob -> click Get publish profile.

enter image description here

2.Open the downloaded file with the format joyweb11.PublishSettings in step 1, note down the userName and userPWD in this file.

3.Then use the code below, replace the value of username and password with the values in step 2, also replace the webapp name in the url with yours, it works fine on my side.

import requests
from base64 import b64encode

username = '$joyweb11'
password = '7pWclexxxxxJlHwoLRwtrneE'
base64AuthInfo = b64encode((username+':'+password).encode('ascii')).decode('ascii')

url = 'https://joyweb11.scm.azurewebsites.net/api/triggeredwebjobs/HubSpot/history'
headers = {'Authorization': 'Basic ' + base64AuthInfo}

response = requests.get(url=url, headers=headers)
print(response.status_code)
print(response.text)

enter image description here

Upvotes: 2

Related Questions