Spec-Zone.ru › OpenTofu 1.9

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

Примечание

Вам не нужно читать эту документацию, чтобы использовать 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_code, обязательны оба свойства: authz и token.

    Если 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.9/internals/login-protocol/

Spec-Zone.ru

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