docs: перенос документации из IPWhiteList + CONTEXT.md (резюме для нового чата)
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# Промпт для 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
|
||||
- Только практические варианты, которые можно закодить сейчас
|
||||
- ВЕСЬ ОТВЕТ ОДНИМ БЛОКОМ — без свёрток, без интерактивных элементов
|
||||
Reference in New Issue
Block a user