Przebieg uwierzytelniania
Ta strona opisuje, w jaki sposób aplikacje klienckie uwierzytelniają się w API REST warstwy sterowania (control-plane) VaultPAM.
Przegląd
VaultPAM obsługuje dwa typy poświadczeń:
| Typ poświadczenia | Przypadek użycia | Czas życia |
|---|---|---|
| Token sesji | Interaktywne lub krótkotrwałe scenariusze automatyzacji | Kontrolowany przez pole expires_in w odpowiedzi |
| Personal Access Token (PAT) | Długotrwałe integracje, potoki CI/CD | Do PAT_ABSOLUTE_MAX_TTL_DAYS (180 dni) |
Oba typy to tokeny Bearer przenoszone w nagłówku Authorization w każdym żądaniu.
Pozyskiwanie tokenu sesji
Krok 1 — POST /api/v1/auth/login
POST /api/v1/auth/login
Content-Type: application/json
{
"email": "operator@example.com",
"password": "<password>"
}
Pomyślna odpowiedź (200):
{
"access_token": "eyJ...",
"expires_in": 3600
}
Pole expires_in jest autorytatywnym czasem życia tokenu wyrażonym w sekundach. Traktuj tę wartość jako źródło prawdy w logice wygasania tokenu — nie polegaj na żadnej zakodowanej na stałe stałej.
Odpowiedź z błędem: Wszystkie niepowodzenia uwierzytelniania zwracają jednolity błąd AUTH_FAILED, niezależnie od rzeczywistej przyczyny niepowodzenia (błędne hasło, nieznany adres e-mail, zablokowane konto). Jest to zamierzone — VaultPAM nie ujawnia, która część poświadczenia była nieprawidłowa.
{
"error": "AUTH_FAILED",
"message": "Authentication failed."
}
Krok 2 — Zidentyfikuj aktywną organizację
GET /api/v1/org/memberships
Authorization: Bearer <access_token>
Odpowiedź:
{
"active_org_id": "org_01HXZ...",
"memberships": [
{ "org_id": "org_01HXZ...", "role": "operator" }
]
}
Użyj active_org_id jako wartości nagłówka X-Active-Org-Id w kolejnych żądaniach.
Wykonywanie uwierzytelnionych żądań
Dołączaj oba nagłówki w każdym wywołaniu API:
Authorization: Bearer <access_token>
X-Active-Org-Id: <active_org_id>
Przykład:
GET /api/v1/safes
Authorization: Bearer eyJ...
X-Active-Org-Id: org_01HXZ...
Wygasanie tokenu sesji
Tokeny sesji nie są odnawialne. Nie istnieje punkt końcowy odnawiania — żądanie do /api/v1/auth/refresh zwraca 404. Gdy token wygaśnie, uwierzytelnij się ponownie, ponownie wywołując POST /api/v1/auth/login.
Twój klient powinien:
- Zapisać wartość
expires_inz odpowiedzi logowania. - Uwierzytelnić się ponownie przed wygaśnięciem tokenu (zalecane: odjąć 60 sekund jako bufor).
- Ponowić pierwotne żądanie z nowym tokenem.
VaultPAM nie obsługuje tokenów odświeżających w stylu OAuth. Po wygaśnięciu wymagane jest ponowne zalogowanie.
Wylogowanie
Natychmiastowe unieważnienie tokenu sesji:
POST /api/v1/auth/logout
Authorization: Bearer <access_token>
X-Active-Org-Id: <active_org_id>
Odpowiedź: 204 No Content
Personal Access Tokens (PAT)
Tokeny PAT to długotrwałe tokeny przeznaczone do automatyzacji i integracji. Mają prefiks pat_AIC_.
Utwórz token PAT
POST /api/v1/auth/api-tokens
Authorization: Bearer <access_token>
X-Active-Org-Id: <active_org_id>
Content-Type: application/json
{
"name": "ci-pipeline-token",
"scopes": ["safes.read"],
"expires_in_days": 90
}
Wartość tokenu jest zwracana jednokrotnie w momencie utworzenia i nie można jej ponownie odzyskać.
Unieważnij token PAT
DELETE /api/v1/auth/api-tokens/{token_id}
Authorization: Bearer <access_token>
X-Active-Org-Id: <active_org_id>
Odpowiedź: 204 No Content
Egzekwowanie zakresów jest wdrażane stopniowo dla poszczególnych rodzin punktów końcowych. Wywołania z tokenem PAT o ograniczonym zakresie do punktu końcowego spoza zadeklarowanych zakresów tokenu mogą zwrócić 403. Używaj minimalnych zakresów niezbędnych dla Twojego przypadku użycia.
Przechowywanie tokenów
Tokeny zapewniają pełny dostęp do API w ramach przyznanych zakresów. Niewłaściwe obchodzenie się z tokenami może prowadzić do nieautoryzowanego dostępu.
Wymagane praktyki:
- Nigdy nie umieszczaj tokenów w systemie kontroli wersji. Nawet w prywatnych repozytoriach tokeny w zatwierdzonym kodzie stanowią trwałe zagrożenie bezpieczeństwa. Używaj zmiennych środowiskowych lub menedżera sekretów.
- W środowisku produkcyjnym używaj pęku kluczy systemu operacyjnego lub menedżera sekretów. Przykłady: AWS Secrets Manager, HashiCorp Vault, macOS Keychain, pęk kluczy jądra Linux.
- Nigdy nie loguj wartości tokenów. Przejrzyj konfigurację logowania, aby upewnić się, że tokeny w nagłówkach lub treściach żądań są maskowane.
- Unieważniaj tokeny, gdy nie są już potrzebne. Dla tokenów PAT użyj
DELETE /api/v1/auth/api-tokens/{token_id}. Tokeny sesji wygasają automatycznie, ale należy je traktować jako możliwe do unieważnienia. - Skonfiguruj narzędzia do skanowania sekretów tak, aby wykrywały prefiks
pat_AIC_. Prefiks ten występuje we wszystkich tokenach PAT VaultPAM i pozwala narzędziom takim jak GitHub Advanced Security oznaczać przypadkowe ujawnienia.
Następne kroki
- Szybki start z curl — kompleksowy przykład z użyciem wiersza poleceń
- Szybki start z Python — przykład integracji w języku Python
- Szybki start z TypeScript — przykład integracji w TypeScript/Node.js
- Limity szybkości — poznaj nagłówki
x-ratelimit-*i zachowanie przy ponawianiu