К основному содержанию
скилл CX Codex GP ChatGPT официальный · OpenAI

twilio-security-api-auth — скилл для Codex: выбор способа

Помогает выбрать способ аутентификации Twilio и подключить его правильно, чтобы Auth Token не утёк в продакшен.

Установить в Codex · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add openai/plugins --skill twilio-security-api-auth -a codex
Открыть на GitHub

Что делает twilio-security-api-auth

Скилл разбирает четыре способа аутентификации в Twilio и подсказывает, какой брать под задачу. Auth Token годится только для локальных тестов. Для серверного кода в продакшене — API Key + Secret или OAuth2 с токеном на час. Клиентским SDK в браузере и на мобильных нужен Access Token (JWT), который генерируют на сервере.

Внутри — таблица сравнения методов, готовые примеры на Python и Node.js, запрос bearer-токена через cURL и код выпуска Access Token с грантами VoiceGrant, VideoGrant, ChatGrant, SyncGrant. Есть отдельный список того, что так не работает: стандартные ключи не ходят в /Accounts и /Keys, ограниченные ключи не выпускают Access Tokens, а OAuth2 поддерживает только client_credentials без refresh-токенов.

Главная ловушка — ротация Auth Token ломает все API-ключи аккаунта сразу. Это повод завести API-ключи с первого дня, а не переезжать на них потом. Секрет API-ключа показывают один раз при создании, потом его не достать. Тестовые учётные данные работают только с четырьмя эндпоинтами: Messages, Calls, IncomingPhoneNumbers, Lookups, остальные вернут 403.

Какие задачи решает

  • выбрать способ аутентификации Twilio под серверный код
  • убрать Auth Token из продакшен-кода
  • выпустить Access Token для браузерного или мобильного клиента
  • получить bearer-токен OAuth2 через client_credentials
  • тестировать API Twilio без списаний

Примеры запросов агенту

  • Помоги выбрать способ аутентификации Twilio для нашего бэкенда на Python
  • Перепиши инициализацию клиента Twilio на API Key вместо Auth Token
  • Сгенерируй Access Token с VoiceGrant для клиента в браузере

Как установить twilio-security-api-auth

1Через Skills CLI (Vercel)

npx skills add openai/plugins --skill twilio-security-api-auth -a codex

2Вручную: положить файлы

.agents/skills/twilio-security-api-auth/SKILL.md

Для всех проектов — ~/.agents/skills/

По шагам, с командами для каждой платформы: Скиллы Codex: как установить, где лежат и как вызвать

Вопросы о twilio-security-api-auth

Как установить twilio-security-api-auth в Codex?

Выполните npx skills add openai/plugins --skill twilio-security-api-auth -a codex, затем файл скилла окажется по пути .agents/skills/twilio-security-api-auth/SKILL.md.

Что делает twilio-security-api-auth?

Разбирает четыре метода аутентификации Twilio и показывает, какой использовать в продакшене, какой только для тестов и какой для клиентских SDK.

Чем API Key отличается от Auth Token в Twilio?

API-ключ можно отозвать отдельно, а ротация Auth Token ломает сразу все ключи аккаунта. Поэтому Auth Token оставляют для локальных тестов, а в продакшене берут API Key + Secret.

Исходный текст

SKILL.md · MIT
---
name: twilio-security-api-auth
description: >
  Choose the right Twilio authentication method and implement it correctly.
  Covers Auth Token (testing only), API Keys (production standard), OAuth2
  client_credentials (time-limited bearer tokens), Access Tokens (client-side
  SDKs), and test credentials. Use this skill before making any Twilio API
  calls in production.
---

## Overview

Twilio supports four authentication methods. Choosing the wrong one is a security risk — Auth Tokens in production code are the most common credential leak.

| Method | Use for | Token lifetime | Revocable individually |
|--------|---------|---------------|----------------------|
| **Auth Token** | Local testing only | Permanent (until rotated) | No — rotation breaks ALL API keys |
| **API Key + Secret** | Production server-side | Permanent (until deleted) | Yes |
| **OAuth2 Bearer Token** | Production server-side (enhanced) | 1 hour | Expires automatically |
| **Access Token (JWT)** | Client-side SDKs (Voice, Video, Chat) | Up to 24 hours | No — delete issuing API key |

**Decision framework:**
- **Building a quick prototype?** → Auth Token (but switch to API Key before deploying)
- **Production server-side code?** → API Key + Secret (simplest production auth) or OAuth2 (time-limited tokens)
- **Browser/mobile client needs to connect?** → Access Token (JWT) generated server-side
- **Running tests without charges?** → Test credentials with magic numbers

---

## API Key Authentication (Production Standard)

**Create:** Console → Account → API keys & tokens → Create API key

| Key type | Access | Create via |
|----------|--------|-----------|
| **Main** | Full account access | Console only |
| **Standard** | All resources except /Accounts and /Keys endpoints | Console or API |
| **Restricted** | Specific resources only (up to 100 permissions) | Console or v1 IAM API only |

**Python**
```python
import os
from twilio.rest import Client

client = Client(
    os.environ["TWILIO_API_KEY"],      # SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    os.environ["TWILIO_API_SECRET"],
    os.environ["TWILIO_ACCOUNT_SID"]   # required as third argument
)
```

**Node.js**
```node
const client = require("twilio")(
    process.env.TWILIO_API_KEY,
    process.env.TWILIO_API_SECRET,
    { accountSid: process.env.TWILIO_ACCOUNT_SID }
);
```

---

## OAuth2 Authentication (Client Credentials)

Time-limited bearer tokens that expire after 1 hour. More secure than permanent API keys for server-to-server communication.

### Step 1 — Create an OAuth App

Create an OAuth App in the Twilio Console to get a Client ID and Client Secret.

### Step 2 — Request a Bearer Token

**cURL**
```bash
curl -X POST 'https://oauth.twilio.com/v2/token' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'client_id={ClientID}' \
  -d 'client_secret={ClientSecret}' \
  -d 'grant_type=client_credentials'
```

**Response:**
```json
{
    "access_token": "{BearerToken}",
    "token_type": "Bearer",
    "expires_in": 3600
}
```

### Step 3 — Use the Bearer Token

```bash
curl 'https://api.twilio.com/2010-04-01/Accounts/{AccountSID}/Messages.json' \
  -H 'Authorization: Bearer {BearerToken}'
```

### SDK Support

OAuth2 is supported in all Twilio SDKs:

| Language | Minimum version |
|----------|----------------|
| Java | 10.6.0 |
| C#/.NET | 7.6.0 |
| Node.js | 5.4.0 |
| Python | 9.4.1 |
| Ruby | 7.4.0 |
| PHP | 8.5.0 |
| Go | 1.25.1 |

**Docs:** [OAuth access tokens](https://www.twilio.com/docs/iam/oauth-apps/oauth-access-token) | [Segment OAuth connections](https://www.twilio.com/docs/segment/connections/oauth)

---

## Access Tokens (Client-Side SDKs)

Short-lived JWTs for authenticating browser/mobile clients. Generate server-side, pass to the client.

**Python**
```python
from twilio.jwt.access_token import AccessToken
from twilio.jwt.access_token.grants import VoiceGrant

token = AccessToken(
    os.environ["TWILIO_ACCOUNT_SID"],
    os.environ["TWILIO_API_KEY"],
    os.environ["TWILIO_API_SECRET"],
    identity="user-123",
    ttl=3600
)
token.add_grant(VoiceGrant(outgoing_application_sid="APxxxx"))
print(token.to_jwt())
```

Grant types: `VoiceGrant`, `VideoGrant`, `ChatGrant` (Conversations), `SyncGrant`

---

## Test Credentials

Make API calls without charges. Find at Console → Account → API keys & tokens → Test credentials.

Magic numbers: `+15005550006` (valid), `+15005550001` (invalid, error 21211), `+15005550007` (no SMS, error 21612)

---

## CANNOT

- **Standard keys cannot access /Accounts or /Keys endpoints** — Returns 20003 (401). Use Auth Token or Main key.
- **Cannot create restricted keys via v2010 API** — Silently creates a standard key instead. Use v1 IAM API.
- **Restricted keys cannot generate Access Tokens** — Only Standard and Main keys can.
- **Cannot revoke individual Access Tokens** — Valid until expiration (max 24h). Delete the issuing API key to revoke all.
- **OAuth2 only supports `client_credentials` grant** — No refresh tokens, no authorization code flow.
- **OAuth2 tokens expire after 1 hour** — Your application must handle token refresh.
- **API Key Secret shown only at creation** — Cannot be retrieved afterward.
- **Auth Token rotation breaks ALL API keys** — One-way door. This is why you should use API keys from day one.
- **Test credentials work with only 4 endpoints** — Messages, Calls, IncomingPhoneNumbers, Lookups. All others return 403.

---

## Next Steps

- **Account setup and sub-accounts:** `twilio-account-setup`
- **HIPAA account configuration:** `twilio-security-compliance-hipaa`
- **Webhook signature validation:** `twilio-webhook-architecture`
- **Credential security patterns:** `twilio-security-hardening`

© Twilio · MIT · openai/plugins

Похожие скиллы

Все скиллы по теме «Безопасность» →
api-auth-key-management Samuel Berthe Скилл помогает спроектировать систему API-ключей для внешних клиентов сервиса. Пригодится при настройке ротации без простоя и разграничении сервисных доступов. CX Codex +1 7 800установок auth-implementation-patterns Seth Hobson Скилл для проектирования аутентификации и авторизации: JWT, OAuth2, сессии, роли. Пригодится, когда пишете вход в систему или чините дыру в доступе. CX Codex 19 388установок better-auth-security-best-practices better-auth Настраивает защиту Better Auth: ограничивает частоту запросов, проверяет происхождение, шифрует токены и защищает пользовательские сессии. CX Codex +1 48 000установок api-auth-and-jwt-abuse yaklang Плейбук для проверки bearer-токенов, API-ключей и доверия к claim'ам. Пригодится на пентесте API, где аутентификация держится на JWT или заголовках запроса. CX Codex +1 3 800установок twilio-communications sickn33 Скилл помогает настроить отправку сообщений, голосовые вызовы и двухфакторную верификацию через Twilio. Пригодится при создании IVR-меню или защите входа через одноразовые коды. CX Codex +1 994установок oauth2-provider-design Samuel Berthe Скилл помогает спроектировать собственный сервер авторизации OAuth 2.1 в B2B SaaS. Полезен при настройке входа через сервис, выдаче токенов сторонним приложениям и проверке прав. CX Codex +1 7 800установок

Из того же набора337

Весь набор →
twilio-verify-send-otp Скилл учит агента проводить полный цикл одноразовых кодов в Twilio Verify: создать сервис, отправить код, проверить его. CX Codex GP ChatGPT ★ 7 596звёзд репо twilio-isv-sms-best-practices Скилл для тех, кто встраивает SMS в SaaS-платформу и рассылает сообщения от имени клиентов. Разбирает регистрацию A2P 10DLC и toll-free, субаккаунты и биллинг. CX Codex GP ChatGPT ★ 7 596звёзд репо twilio-sendgrid-inbound-parse Скилл учит агента принимать входящие письма через SendGrid Inbound Parse: MX-записи, разбор полей, вложения и подводные камни. CX Codex GP ChatGPT ★ 7 596звёзд репо twilio-sendgrid-email-send Скилл учит агента отправлять письма через SendGrid v3 Mail Send API: одиночные, пакетные с шаблонами, отложенные и с вложениями. Нужен ключ SendGrid с префиксом SG. CX Codex GP ChatGPT ★ 7 596звёзд репо twilio-rcs-messaging Скилл для Codex и ChatGPT, который ведёт от онбординга RCS-отправителя до отправки карточек и каруселей через Twilio. CX Codex GP ChatGPT ★ 7 596звёзд репо twilio-notifications-alerts-advisor Помогает выбрать архитектуру транзакционных уведомлений: канал, срочность, подтверждение доставки и запасные варианты. CX Codex GP ChatGPT ★ 7 596звёзд репо twilio-lookup-phone-intelligence Скилл для Codex и ChatGPT, который проверяет телефонные номера через Twilio Lookup v2 и оценивает риск мошенничества до отправки SMS или звонка. CX Codex GP ChatGPT ★ 7 596звёзд репо twilio-debugging-observability Разбирает, почему не доходят SMS и падают звонки, и помогает настроить мониторинг Twilio в продакшене. CX Codex GP ChatGPT ★ 7 596звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой