Authentication http basic: Релогин и HTTP Basic Auth / Хабр

Basic Authentication

OAS 3 Это руководство предназначено для OpenAPI 3.0. Если вы используете OpenAPI 2.0, см. наше руководство по OpenAPI 2.0.

Базовая аутентификация — это простая схема аутентификации, встроенная в протокол HTTP. Клиент отправляет HTTP-запросы с заголовком Authorization , который содержит слово Basic , за которым следует пробел и строка в кодировке base64 username:password . Например, чтобы авторизоваться как demo / p@55w0rd , клиент отправит

  Авторизация: базовая ZGVtbzpwQDU1dzByZA==  

Примечание: Поскольку base64 легко декодируется, базовую аутентификацию следует использовать только вместе с другими механизмами безопасности, такими как HTTPS/SSL.

Описание базовой аутентификации

Используя OpenAPI 3.0, вы можете описать обычную аутентификацию следующим образом:

  опенапи: 3. 0.0
...

компоненты:
  схемы безопасности:
    basicAuth: # <-- произвольное имя схемы безопасности
      тип: http
      схема: базовая

безопасность:
  - basicAuth: [] # <-- используйте здесь то же имя
 

Первый раздел, securitySchemes , определяет схему безопасности с именем basicAuth (произвольное имя). Эта схема должна иметь тип : http и схему : базовая . Раздел security затем применяет обычную аутентификацию ко всему API. Квадратные скобки [] обозначают используемые области безопасности; список пуст, поскольку обычная проверка подлинности не использует области. безопасность может быть установлена ​​глобально (как в примере выше) или на уровне операции. Последнее полезно, если только часть операций требует базовой аутентификации:

  путей:
  /что-нибудь:
    получать:
      безопасность:
        - BasicAuth: []  

Обычную аутентификацию также можно комбинировать с другими методами аутентификации, как описано в разделе Использование нескольких типов аутентификации.

401 Ответ

Вы также можете определить ответ 401 «Неавторизованный», возвращаемый для запросов с отсутствующими или неправильными учетными данными. Этот ответ включает заголовок WWW-Authenticate , который вы можете упомянуть. Как и в случае с другими распространенными ответами, ответ 401 может быть определен в глобальном компоненты/ответы в разделе и ссылки в другом месте через $ref .

  путей:
  /что-нибудь:
    получать:
      ...
      ответы:
        ...
        «401»:
           $ref: '#/компоненты/ответы/UnauthorizedError'
    почта:
      ...
      ответы:
        ...
        «401»:
          $ref: '#/компоненты/ответы/UnauthorizedError'
...
компоненты:
  ответы:
    Несанкционированная ошибка:
      описание: Информация для аутентификации отсутствует или недействительна
      заголовки:
        WWW_Аутентификация:
          схема:
            тип: строка 

Дополнительные сведения о синтаксисе ответов см. в разделе Описание ответов.

  

Не нашли то, что искали? Спросите сообщество
Нашли ошибку? Дайте нам знать

Аутентификация — Запросы 2.29.0 документация

В этом документе обсуждается использование различных видов аутентификации с запросами.

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

Базовая аутентификация

Многие веб-службы, требующие проверки подлинности, принимают базовую проверку подлинности HTTP. Это самый простой вид, и Requests поддерживает его прямо из коробки.

Делать запросы с HTTP Basic Auth очень просто:

 >>> из request.auth импортировать HTTPBasicAuth
>>> basic = HTTPBasicAuth('пользователь', 'пароль')
>>> request.get('https://httpbin.org/basic-auth/user/pass', auth=basic)
<Ответ [200]>
 

На самом деле базовая аутентификация HTTP настолько распространена, что Requests предоставляет удобное сокращение за использование:

 >>> request. get('https://httpbin.org/basic-auth/user/pass', auth=('user', 'pass'))
<Ответ [200]>
 

Предоставление учетных данных в таком кортеже точно такое же, как Пример HTTPBasicAuth выше.

Аутентификация netrc

Если с аргументом auth не указан метод аутентификации, запросы будут попытаться получить учетные данные аутентификации для имени хоста URL-адреса из пользовательский файл netrc. Файл netrc переопределяет необработанные заголовки аутентификации HTTP. набор с

заголовков = .

Если учетные данные для имени хоста найдены, запрос отправляется с HTTP Basic Аут.

Дайджест-аутентификация

Другой очень популярной формой HTTP-аутентификации является дайджест-аутентификация. и запросы также поддерживают это из коробки:

 >>> из request.auth импортировать HTTPDigestAuth
>>> url = 'https://httpbin.org/digest-auth/auth/user/pass'
>>> request.get(url, auth=HTTPDigestAuth('user', 'pass'))
<Ответ [200]>
 

Аутентификация OAuth 1

Распространенной формой аутентификации для нескольких веб-API является OAuth. запросов-oauthlib библиотека позволяет пользователям Requests легко выполнять аутентифицированные запросы OAuth 1:

 >>> запросы на импорт
>>> из request_oauthlib импортировать OAuth2
>
>> url = 'https://api.twitter.com/1.1/account/verify_credentials.json' >>> auth = OAuth2('YOUR_APP_KEY', 'YOUR_APP_SECRET', ... 'USER_OAUTH_TOKEN', 'USER_OAUTH_TOKEN_SECRET') >>> request.get(url, auth=auth) <Ответ [200]>

Для получения дополнительной информации о том, как работает поток OAuth, посетите официальный веб-сайт OAuth. Примеры и документацию по request-oauthlib см. в request_oauthlib. репозиторий на GitHub

Аутентификация OAuth 2 и OpenID Connect Connect

Библиотека request-oauthlib также обрабатывает OAuth 2, механизм аутентификации. поддержка OpenID Connect. См. документацию Requests-oauthlib OAuth3 для сведения о различных потоках управления учетными данными OAuth 2:

  • Поток веб-приложений

  • Поток мобильных приложений

  • Поток устаревших приложений

  • Поток внутренних приложений

Другое Аутентификация

Requests позволяет легко и просто использовать другие формы аутентификации.

быстро подключается. Члены сообщества открытого исходного кода часто пишут обработчики аутентификации для более сложных или менее часто используемых форм аутентификация. Некоторые из лучших были собраны под Организация запросов, в том числе:

  • Керберос

  • НТЛМ

Если вы хотите использовать любую из этих форм аутентификации, перейдите прямо к их GitHub и следуйте инструкциям.

Новые формы аутентификации

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

Для этого создайте подкласс AuthBase и реализуйте __call__() метод:

 >>> запросы на импорт
>>> класс MyAuth(requests.auth.AuthBase):
... def __call__(self, r):
... # Реализовать мою аутентификацию
... вернуть р
...
>
>> URL = 'https://httpbin.org/get' >>> request.get(url, auth=MyAuth()) <Ответ [200]>

Когда к запросу присоединяется обработчик проверки подлинности, он вызывается во время настройки запроса.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *