Spec-Zone.ru › OpenTofu 1.12

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

Примечание

Вам не нужно читать эту документацию, чтобы использовать 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 аутентифицирует запрос и выдаёт токен авторизации.

    Интерфейс командной строки OpenTofu поддерживает один тип разрешения:

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

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

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

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

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

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

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

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

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

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

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

Spec-Zone.ru

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