Базовая HTTP-аутентификация с python 3.2 (urllib.request) - PullRequest
0 голосов
/ 07 июля 2011

Это мой первый пост с этим аккаунтом, и я всю прошлую неделю боролся за то, чтобы это заработало, поэтому я надеюсь, что кто-то может помочь мне заставить его работать.

Я пытаюсь получить некоторые данные из https://api.connect2field.com/, но он отклоняет все мои попытки аутентификации из python (но не из браузера). Код, который я использую

import urllib.request as url
import urllib.error as urlerror
urlp = 'https://api.connect2field.com/api/Login.aspx'

# Create an OpenerDirector with support for Basic HTTP Authentication...
auth_handler = url.HTTPBasicAuthHandler()
auth_handler.add_password(realm='Connect2Field API',
                          uri=urlp,
                          user='*****',
                          passwd='*****')
opener = url.build_opener(auth_handler)
# ...and install it globally so it can be used with urlopen.
url.install_opener(opener)
try:
    f = url.urlopen(urlp)
    print (f.read())
except urlerror.HTTPError as e:
        if hasattr(e, 'code'):
            if e.code != 401:
                print ('We got another error')
                print (e.code)
        else:
            print (e.headers)

Я почти уверен, что код все делает правильно, что заставляет меня думать, что, возможно, есть еще один шаг аутентификации, который требует ASP.net. У кого-нибудь есть опыт работы с протоколом аутентификации ASP.Net?

Я буду проверять этот пост в течение дня, поэтому я могу опубликовать больше информации, если потребуется.

Редактировать: Я также пытался запустить мой скрипт на обычном http-сервере аутентификации, работающем дома, и он аутентифицировался, поэтому я уверен, что запрос настроен правильно.

1 Ответ

0 голосов
/ 07 июля 2011

Похоже, что IIS настроен на базовую аутентификацию, ASP.NET, скорее всего, будет настроен на использование аутентификации Windows.

Как вы сказали, аутентификация работает через браузер, поэтому лучше всего использовать такой инструмент, как fiddler, для захвата запроса / ответа при подключении через браузер, а также при подключении через ваш код. Сравните их, чтобы устранить проблему.

Например, я помню случай, когда веб-сайт сначала запрашивал учетные данные для аутентификации, а затем перенаправлял их на другой URL, который запрашивал разные учетные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...