Skip to content

OAuth2 Password Grant

Назначение

OAuth2 Resource Owner Password Grant — аутентификация с использованием имени пользователя и пароля. Подходит для собственных приложений, где пользователь доверяет приложению свои учётные данные.

Когда использовать

  • Собственные приложения (мобильные, веб)
  • Интеграция с Keycloak и аналогичными Identity Provider
  • Когда API поддерживает OAuth2 Password Grant

Конфигурация

yaml
specs:
  - domain: jokes
    llm_title: Dad Joke API
    base_url: https://icanhazdadjoke.com
    collections:
      - llm_title: Jokes
        location: https://raw.githubusercontent.com/mmadfox/swag2mcp/main/specs/dadjoke.yaml
    auth:
      type: oauth2-pwd
      config:
        client_id: "$(CLIENT_ID)"
        client_secret: "$(CLIENT_SECRET)"
        username: "$(USERNAME)"
        password: "$(PASSWORD)"
        token_url: "https://auth.example.com/oauth/token"
        scopes:
          - openid
          - profile
        request_format: form

Параметры

ПараметрОбязательноОписание
client_idДаИдентификатор клиента
usernameДаИмя пользователя
passwordДаПароль
token_urlДаURL эндпоинта токена
client_secretНетСекрет клиента (опционально, для публичных клиентов)
scopesНетСписок разрешений (опционально)
request_formatНетФормат тела запроса: form (по умолчанию, application/x-www-form-urlencoded) или json (application/json)

Примечания

  • client_secret опционален — поддерживаются публичные клиенты (например, Keycloak)
  • swag2mcp автоматически обновляет токен при истечении срока действия
  • Токен кэшируется до истечения срока действия
  • Поля client_id, client_secret, username и password поддерживают $(VAR) для чтения из переменных окружения. Поля token_url и scopes не поддерживают $(VAR) и должны быть указаны явно
  • request_format: json отправляет запрос токена в формате JSON — используйте, если эндпоинт токена требует Content-Type: application/json