Похоже, что этот проект аутентификации в основном использует токен вместо cookie для поддержания аутентификации в сеансе.Без токена ваша попытка аутентификации никогда не дойдет до точки обращения к серверу каталогов.Функция verify_auth_token завершается с ошибкой неверной подписи (в частности, «BadSignature: No '.' Найдено в значении»).Без отслеживания, однако, единственный вывод, который вы получаете, это ошибка 401, которую вы видите.
Процесс аутентификации состоит из двух этапов - сначала получите токен с URL-адреса http://127.0.0.1:5000/auth/request-token. При условии предоставления действительных учетных данных, URL-адрес возвращает JSON, содержащий токен.В зависимости от того, как вы используете токен, вам может понадобиться закодировать его base64 (пример httpie на странице GitHub обрабатывает это для вас, но в приведенном ниже примере содержится явный шаг кодирования).
Затем вы используете токен при доступе к последующим страницам, например http://127.0.0.1:5000/
import requests
import base64
API_ENDPOINT = "http://127.0.0.1:5000/auth/request-token"
SITE_URL = "http://127.0.0.1:5000/"
tupleAuthValues = ("userIDToTest", "P@s5W0Rd2T35t")
tokenResponse = requests.post(url = API_ENDPOINT, auth=tupleAuthValues)
if(tokenResponse.status_code is 200):
jsonResponse = tokenResponse.json()
strToken = jsonResponse['token']
print("The token is %s" % strToken)
strB64Token = base64.b64encode(strToken)
print("The base64 encoded token is %s" % strB64Token)
strHeaders = {'Authorization': 'Basic {}'.format(strB64Token)}
responseSiteAccess = requests.get(SITE_URL, headers=strHeaders)
print(responseSiteAccess.content)
else:
print("Error requesting token: %s" % tokenResponse.status_code)
Запустив код выше, вы получите:
[lisa@linux02 flask-ldap]# python authtest.py
The token is eyJhbGciOiJIUzI1NiIsImV4cCI6MTUzODE0NzU4NiwiaWF0IjoxNTM4MTQzOTg2fQ.eyJ1c2VybmFtZSI6ImdhdXNzIn0.FCJrECBlG1B6HQJKwt89XL3QrbLVjsGyc-NPbbxsS_U:
The base64 encoded token is ZXlKaGJHY2lPaUpJVXpJMU5pSXNJbVY0Y0NJNk1UVXpPREUwTnpVNE5pd2lhV0YwSWpveE5UTTRNVFF6T1RnMmZRLmV5SjFjMlZ5Ym1GdFpTSTZJbWRoZFhOekluMC5GQ0pyRUNCbEcxQjZIUUpLd3Q4OVhMM1FyYkxWanNHeWMtTlBiYnhzU19VOg==
Hello, world