oauth-implementation · secondsky — скилл для Claude Code
Скилл помогает внедрить OAuth 2.0 и OpenID Connect, настроить авторизационные потоки и устранить ошибки валидации state, PKCE или ротации токенов.
npx skills add secondsky/claude-skills --skill oauth-implementation -a claude-codeЧто делает oauth-implementation
Скилл содержит паттерны реализации OAuth 2.0 и OpenID Connect для веб-приложений, SPA и межсервисного взаимодействия. Внутри описаны Authorization Code flow с валидацией параметра state, связка с PKCE для публичных клиентов, Client Credentials и процедура обновления сессий по refresh-токену.
Для Node.js и Express даны готовые обработчики логина и callback с обменом кода на токены, а также генератор verifier и challenge через модуль crypto. В справочных материалах упомянуты реализации для Python Flask с Authlib и Java Spring Security, включая конечные точки discovery и JWKS.
Архитектура требует строгого соблюдения безопасности: время жизни access-токена ограничено 15 минутами, токены сохраняются в HttpOnly cookies, а implicit flow и хранение в localStorage запрещены.
Какие задачи решает
- реализовать Authorization Code flow с проверкой параметра
state - сгенерировать verifier и challenge по стандарту PKCE для SPA
- настроить межсервисный обмен по протоколу Client Credentials
- организовать ротацию refresh-токенов с ограничением времени сессий
Примеры запросов агенту
- Напиши эндпоинты
/auth/loginи/auth/callbackна Express с проверкойoauthState. - Сделай функцию генерации PKCE для авторизации в мобильном приложении.
- Покажи, как настроить ротацию refresh-токенов и ограничить жизнь access-токена 15 минутами.
Как установить oauth-implementation
1Через Skills CLI (Vercel)
npx skills add secondsky/claude-skills --skill oauth-implementation -a claude-code2Вручную: положить файлы
~/.claude/skills/oauth-implementation/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/oauth-implementation/
1Через Skills CLI (Vercel)
npx skills add secondsky/claude-skills --skill oauth-implementation -a codex2Вручную: положить файлы
.agents/skills/oauth-implementation/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add secondsky/claude-skills --skill oauth-implementation -a cursor2Вручную: положить файлы
.cursor/skills/oauth-implementation/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install secondsky/claude-skills oauth-implementation2Вручную: положить файлы
.github/skills/oauth-implementation/SKILL.md1Через Skills CLI (Vercel)
npx skills add secondsky/claude-skills --skill oauth-implementation -a gemini-cli2Командой платформы
gemini skills install https://github.com/secondsky/claude-skills --path plugins/oauth-implementation/skills/oauth-implementationВручную: положить файлы
.devin/skills/oauth-implementation/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add secondsky/claude-skills --skill oauth-implementation -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о oauth-implementation
Как установить oauth-implementation в Claude Code?
Выполните команду npx skills add secondsky/claude-skills --skill oauth-implementation -a claude-code. Файл навыка сохранится в каталоге проекта.
Для каких задач подходит этот скилл?
Он нужен при подключении сторонних провайдеров авторизации, настройке SSO, создании межсервисных интеграций и исправлении ошибок в потоках PKCE или OAuth 2.0.
Какие правила безопасности обязательны при реализации?
Инструкция требует использовать HTTPS, проверять redirect_uri, хранить токены только в HttpOnly cookies и ограничивать жизнь access-токенов 15 минутами. Использовать implicit flow или localStorage запрещено.
Исходный текст
SKILL.md · MIT
---
name: oauth-implementation
description: OAuth 2.0 and OpenID Connect authentication with secure flows. Use for third-party integrations, SSO systems, token-based API access, or encountering authorization code flow, PKCE, token refresh, scope management errors.
license: MIT
---
# OAuth Implementation
Implement OAuth 2.0 and OpenID Connect for secure authentication.
## OAuth 2.0 Flows
| Flow | Use Case |
|------|----------|
| Authorization Code | Web apps (most secure) |
| Authorization Code + PKCE | SPAs, mobile apps |
| Client Credentials | Service-to-service |
| Refresh Token | Session renewal |
## Authorization Code Flow (Express)
```javascript
const express = require('express');
const jwt = require('jsonwebtoken');
// Step 1: Redirect to authorization
app.get('/auth/login', (req, res) => {
const state = crypto.randomBytes(16).toString('hex');
req.session.oauthState = state;
const params = new URLSearchParams({
client_id: process.env.CLIENT_ID,
redirect_uri: process.env.REDIRECT_URI,
response_type: 'code',
scope: 'openid profile email',
state
});
res.redirect(`${PROVIDER_URL}/authorize?${params}`);
});
// Step 2: Handle callback
app.get('/auth/callback', async (req, res) => {
if (req.query.state !== req.session.oauthState) {
return res.status(400).json({ error: 'Invalid state' });
}
const tokenResponse = await fetch(`${PROVIDER_URL}/token`, {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
grant_type: 'authorization_code',
code: req.query.code,
redirect_uri: process.env.REDIRECT_URI,
client_id: process.env.CLIENT_ID,
client_secret: process.env.CLIENT_SECRET
})
});
const tokens = await tokenResponse.json();
// Store tokens securely and create session
});
```
## PKCE for Public Clients
```javascript
function generatePKCE() {
const verifier = crypto.randomBytes(32).toString('base64url');
const challenge = crypto
.createHash('sha256')
.update(verifier)
.digest('base64url');
return { verifier, challenge };
}
```
## Security Requirements
- Always use HTTPS
- Validate redirect URIs strictly
- Use PKCE for public clients
- Store tokens in HttpOnly cookies
- Implement token rotation
- Use short-lived access tokens (15 min)
## Additional Implementations
See [references/python-java.md](references/python-java.md) for:
- Python Flask with Authlib OIDC provider
- OpenID Connect discovery and JWKS endpoints
- Java Spring Security OAuth2 server
- Token introspection and revocation
## Never Do
- Store tokens in localStorage
- Use implicit flow
- Skip state parameter validation
- Expose client secrets in frontend
- Use long-lived access tokens
© secondsky · MIT · secondsky/claude-skills
Похожие скиллы
Все скиллы по теме «Безопасность» →Сначала — oauth-implementation от других авторов.