Files
ipwhitelist-app/research/prompt-opus-auth.md
T

50 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Промпт для Claude Opus 4 — архитектура OIDC/JWT для внешнего auth-api
## Контекст (не анализируй)
Делаем микросервис на Node.js + Express. Он стоит ЗА общим auth-api платформы. Платформа сама не наша, мы не можем менять Keycloak.
**Схема авторизации платформы:**
1. Браузер → lk-api-gateway → Keycloak (логин)
2. После логина платформа обменивает code на токен через СВОЙ auth-api
3. auth-api выпускает JWT с `"iss": "auth-api"` (не Keycloak!)
4. Фронтенд платформы хранит access_token в localStorage и шлёт `Authorization: Bearer <token>` к своему бэкенду
**Нам неизвестно:**
- JWKS URL auth-api (публичный ключ для проверки подписи)
- Как именно фронтенд платформы будет вызывать НАШ сервис (прямой запрос браузера с токеном? Или через их API-гейтвей?)
- Есть ли у нас доступ к этому auth-api или только к самому JWT
**Реальный JWT (из HAR трафика):**
```json
{
"iss": "auth-api",
"sub": "0199e325-1cdf-7cda-9319-e5302a85e291",
"ClientID": "WZ01325",
"company_id": "3e64aac6-dcfc-4082-88dc-da19c86555a5",
"company_name": "Тест",
"email": "tazet@narod.ru",
"token_type": "access",
"realm_access": { "roles": null },
"resource_access": { "account": { "roles": null } },
"groups": null
}
```
## Что нужно
Предложи стратегию проверки токенов в нашем сервисе. Мы не знаем JWKS URL auth-api и не имеем к нему доступа (пока). Нужно найти золотую середину между «вообще не проверяем подпись» и «требуем JWKS которого нет».
Конкретные вопросы:
1. Если JWKS недоступен — что проверять ВМЕСТО подписи? (exp, iss, audience?)
2. Может ли наш сервис валидировать iss='auth-api' без криптографии?
3. Стоит ли делать промежуточный вариант: проверять exp+iss сейчас, а JWKS добавить когда дадут URL?
4. Как защититься от подделки токена если подпись не проверяется?
5. Нужен ли нам client_secret/shared secret с auth-api?
Ограничения:
- Не предлагай «спросить у команды платформы» — мы и так спросим, но ответа пока нет
- Не предлагай поднять свой Keycloak
- Только практические варианты, которые можно закодить сейчас
- ВЕСЬ ОТВЕТ ОДНИМ БЛОКОМ — без свёрток, без интерактивных элементов