Spec-Zone.ru › OpenTofu 1.10

Протокол входа на стороне сервера

Примечание

Чтобы пользоваться tofu login, читать эту документацию не нужно. Приведённая ниже информация предназначена для тех, кто планирует реализовать серверную часть tofu login, чтобы предоставлять сервисы, совместимые с OpenTofu, в сторонней системе.

Команда tofu login поддерживает выполнение запроса на авторизацию OAuth 2.0 с использованием конфигурации, предоставленной целевым хостом. Возможно, вам потребуется реализовать этот протокол, если вы создаёте стороннюю реализацию каких-либо сервисов, совместимых с OpenTofu, например реестра модулей OpenTofu.

Сначала OpenTofu использует обнаружение удалённых сервисов, чтобы найти конфигурацию OAuth для хоста. Хост должен поддерживать имя сервиса login.v1 и определять для него объект со значениями конфигурации клиента OAuth, например:

Блок кода
{
  "login.v1": {
    "client": "tofu-cli",
    "grant_types": ["authz_code"],
    "authz": "/oauth/authorization",
    "token": "/oauth/token",
    "ports": [10000, 10010],
  }
}

Свойства объекта обнаружения:

  • client (обязательное): значение client_id, используемое при отправке запросов, согласно определению в разделе 2.2 RFC 6749.

    Поскольку OpenTofu является общедоступным клиентом (он устанавливается в системах конечных пользователей и поэтому не может защитить секрет клиента OAuth), значение client_id носит исключительно рекомендательный характер, и сервер не должен считать его гарантией того, что запрос на авторизацию действительно поступил от OpenTofu.

  • grant_types (необязательное): JSON-массив строк, описывающий набор типов предоставления OAuth 2.0, которые способен поддерживать сервер. «Тип предоставления» определяет конкретный способ, с помощью которого сервер OAuth аутентифицирует запрос и выдаёт токен авторизации.

    CLI OpenTofu поддерживает один тип предоставления:

    • authz_code: предоставление кода авторизации. Если указано authz_code, обязательны оба свойства: authz и token.

    Если grant_types не указано, по умолчанию используется ["authz_code"].

  • authz (обязательное, если требуется для выбранного типа предоставления): конечная точка авторизации сервера. Если задан относительный URL, он разрешается относительно расположения документа обнаружения сервиса.

  • token (обязательное, если требуется для выбранного типа предоставления): конечная точка токена сервера. Если задан относительный URL, он разрешается относительно расположения документа обнаружения сервиса.

  • ports (необязательное): JSON-массив из двух элементов, задающий включительный диапазон TCP-портов, которые OpenTofu может использовать для временного HTTP-сервера. OpenTofu запускает этот сервер, чтобы предоставить конечную точку перенаправления для первого шага предоставления кода авторизации. OpenTofu открывает TCP-порт для прослушивания на интерфейсе обратной связи, чтобы получить ответ от конечной точки авторизации сервера.

    Если диапазон не указан, OpenTofu может выбрать любой TCP-порт с номером не меньше 1024.

    OpenTofu позволяет ограничить диапазон портов для обеспечения совместимости с реализациями серверов OAuth, которым требуется, чтобы каждому client_id соответствовал фиксированный набор допустимых URL-адресов конечной точки перенаправления. Настройте такой сервер на ожидание диапазона URL-адресов вида http://localhost:10000/ с последовательными номерами портов, а затем укажите этот диапазон портов с помощью ports.

    По возможности рекомендуем разрешить не менее 10 различных номеров портов и использовать номера не меньше 10000, чтобы снизить риск того, что все возможные порты уже будут заняты в конкретной системе.

При запросе предоставления кода авторизации CLI OpenTofu реализует расширение Proof Key for Code Exchange, чтобы защититься от перехвата входящего запроса к конечной точке перенаправления другими приложениями в системе. Настоятельно рекомендуем выбрать реализацию сервера OAuth, которая также поддерживает это расширение и проверяет вызов проверки кода, отправленный на конечную точку токена.

CLI OpenTofu не поддерживает токены обновления OAuth и истечение срока действия токенов. Если ваш сервер выдаёт токены с ограниченным сроком действия, после истечения срока действия токена CLI OpenTofu просто начнёт получать ошибки авторизации. После этого пользователь может снова выполнить tofu login, чтобы получить новый токен.

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.10/internals/login-protocol/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API