Uwierzytelnianie
Klucze API (zalecane dla integracji)
Dział zatytułowany „Klucze API (zalecane dla integracji)”Klucz API to osobisty token dostępu powiązany z członkiem Twojego konta.
- Utwórz go w Ustawienia → Wtyczki → Klucze API RolChat. Sekret jest pokazywany raz; później widać tylko jego pierwsze dziesięć znaków, a RolChat przechowuje wyłącznie skrót SHA-256.
- Format:
rcp_, a po nim 32 losowe bajty w base64url, łącznie około 45 znaków. Prefiks sprawia, że klucz łatwo rozpoznać w logach i odróżnić od tokenu sesji. - Zakresy: wybierane przy tworzeniu klucza ze stałego katalogu uprawnień. Klucz nigdy nie może więcej niż członek, który go utworzył: przy każdym wywołaniu sprawdzane są oba warunki, czyli uprawnienie jest w zakresach klucza i członek nadal je posiada. Zawęź rolę członka, a klucz zawęzi się razem z nią.
- Czas życia: klucze nie wygasają same. Odwołaj klucz na stronie profilu lub przez
DELETE /api/v1/tokens/:id; odwołanie działa natychmiast. Nie ma rotacji w miejscu: odwołaj klucz i utwórz nowy. - Utworzenie i odwołanie są zapisywane w dzienniku audytu.
Wysyłaj go jako token bearer - nie ma osobnego nagłówka dla klucza API:
curl https://api.rolchat.com/api/v1/contacts?limit=20 \ -H "Authorization: Bearer rcp_…" \ -H "X-Account-Id: 7c1d2c6e-…"Żądania z kluczem API wtyczki są ograniczone do 300 na minutę.
Sesje JWT
Dział zatytułowany „Sesje JWT”Aplikacja webowa i mobilne SDK logują się e-mailem i hasłem (albo przez Google lub Apple) i otrzymują parę tokenów.
| Token | Czas życia | Uwagi |
|---|---|---|
| Token dostępu | 15 minut | RS256, weryfikowany względem JWKS pod /.well-known/jwks.json |
| Token odświeżania | 30 dni | Wymieniany przy każdym odświeżeniu; ponowne użycie wymienionego tokenu unieważnia cały łańcuch |
Claimy: sub (użytkownik), acc (konto), rl (rola) oraz, dla ról przypisanych do stron, sts (dozwolone strony).
POST /auth/login, /auth/refresh, /auth/swap-company i /auth/logout to jedyne endpointy przepływu uwierzytelniania, które nie mogą zawierać opisanego dalej nagłówka X-Account-Id.
Nagłówek X-Account-Id
Dział zatytułowany „Nagłówek X-Account-Id”Każde uwierzytelnione żądanie poza czterema powyższymi musi wskazywać konto, w którego imieniu działa:
X-Account-Id: <account uuid>Serwer sprawdza, czy nagłówek jest równy claimowi acc tokenu (lub kontu klucza API). Brak nagłówka to 400 missing_required_header; niezgodność to 403 account_context_mismatch. Nagłówek istnieje po to, aby błąd klienta albo odtworzony token nigdy nie mógł po cichu odczytać danych innego najemcy: niezgodność jest odrzucana, zanim wykona się jakiekolwiek zapytanie, a każdy wpis w logu da się przypisać do konta bez dekodowania tokenu.
Użytkownicy wielu firm
Dział zatytułowany „Użytkownicy wielu firm”Jedna osoba może należeć do kilku firm. Każda firma ma własny token (własny claim acc). Aby się przełączyć:
POST /api/v1/auth/swap-companyAuthorization: Bearer <current access token>
{ "account_id": "<target uuid>" }Firma docelowa musi być jedną z available_companies wywołującego (zwracanych przy logowaniu), w przeciwnym razie odpowiedź to 403 forbidden. Odpowiedź zawiera nową parę tokenów dostępu i odświeżania dla firmy docelowej; stary token odświeżania zostaje unieważniony, a w audycie zapisuje się zdarzenie auth.account.swapped.
Uwierzytelnianie wieloskładnikowe
Dział zatytułowany „Uwierzytelnianie wieloskładnikowe”MFA oparte na TOTP można włączyć dla każdego członka i wymagać go na poziomie konta. Gdy jest włączone, POST /auth/login zwraca wyzwanie, a sesję kończy POST /auth/mfa/verify. Kody zapasowe są wydawane przy rejestracji MFA.
Ochrona logowania
Dział zatytułowany „Ochrona logowania”- Trasy logowania są ograniczone do 10 prób na IP na minutę i 5 na adres e-mail na 15 minut.
- Dziesięć nieudanych logowań blokuje adres e-mail na 30 minut; odpowiedź zawiera
code: account_locked. - reCAPTCHA można włączyć dla wybranych czynności (rejestracja, logowanie, reset hasła); publiczna konfiguracja startowa jest udostępniana pod
GET /api/v1/captcha.