LDAP-логин FLASK - PullRequest
       10

LDAP-логин FLASK

0 голосов
/ 27 сентября 2018

Я использую FLASK_LDAP_AUTH для входа в систему.Я проверяю другой сервер сервера AD для входа в систему.но когда я запускаю его, смотрю только на мой локальный хост?также он повторяет следующую ошибку 401 {"error": "unauthorized", "message": "Пожалуйста, авторизуйтесь с действительным токеном", "status": 401}

app.config['SECRET_KEY'] = 'somethingsecret'
app.config['LDAP_AUTH_SERVER'] = 'ldap://serverIP' 
app.config['LDAP_TOP_DN'] = 'ou=Users,dc=your_org,dc=TEST.domain'
app.register_blueprint(token, url_prefix='/auth')

В этой ссылке https://github.com/drowolath/flask-ldap-auth это сказать что-то с токеном, который не ясно.Надеюсь, что кто-нибудь может помочь

1 Ответ

0 голосов
/ 28 сентября 2018

Похоже, что этот проект аутентификации в основном использует токен вместо 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
...