Update authentication documentation to clarify token exchange and session setup process
This commit is contained in:
@@ -9,8 +9,7 @@ Dokumentacja autentykacji przez Id Magico (https://id.magico.pro) i ustawiania s
|
|||||||
API TravelManager korzysta z **Id Magico** jako centralnego systemu autentykacji. Pełny flow:
|
API TravelManager korzysta z **Id Magico** jako centralnego systemu autentykacji. Pełny flow:
|
||||||
|
|
||||||
1. **OAuth** – przekierowanie użytkownika do Id Magico, otrzymanie `code`
|
1. **OAuth** – przekierowanie użytkownika do Id Magico, otrzymanie `code`
|
||||||
2. **Token** – wymiana `code` na `access_token`
|
2. **Token i Sesja** – wymiana `code` na `access_token` oraz automatyczne ustawienie sesji wewnętrznie przez backend TravelManager
|
||||||
3. **Sesja** – użycie tokena w `POST v1/auth/session` do ustawienia sesji w API TravelManager
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -76,34 +75,33 @@ grant_type=authorization_code&code={code}&redirect_uri={redirect_uri}&client_id=
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Krok 2: Ustawianie sesji w API TravelManager
|
## Krok 2: Automatyczne ustawienie sesji przez backend TravelManager
|
||||||
|
|
||||||
Mając `access_token` z kroku 1, wywołaj endpoint sesji API TravelManager.
|
Po otrzymaniu `access_token` z kroku 1, backend TravelManager automatycznie weryfikuje token i ustawia sesję wewnętrznie.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Endpoint ustawiania sesji
|
## Proces wewnętrzny ustawiania sesji
|
||||||
|
|
||||||
**POST** `v1/auth/session`
|
**Proces wewnętrzny** w backendzie TravelManager po otrzymaniu tokena:
|
||||||
|
|
||||||
Weryfikuje token Bearer z Id Magico i ustawia sesję. W tym miejscu zwracany jest company_id (tenant_id), używany do rozróźnienia tenanta na backendzie
|
1. Backend automatycznie weryfikuje token Bearer z Id Magico
|
||||||
|
2. Pobiera dane użytkownika z Id Magico
|
||||||
|
3. Ustawia sesję dla użytkownika
|
||||||
|
4. Zwraca odpowiedź do aplikacji klienckiej
|
||||||
|
|
||||||
### Nagłówek
|
W tym miejscu pobierany jest company_id (tenant_id), używany do rozróźnienia tenanta na backendzie
|
||||||
|
|
||||||
```
|
### Proces weryfikacji tokena
|
||||||
Authorization: Bearer {token_z_id_magico}
|
|
||||||
Content-Type: application/json
|
|
||||||
```
|
|
||||||
|
|
||||||
### Przykładowe żądanie
|
Backend TravelManager wewnętrznie:
|
||||||
|
- Weryfikuje otrzymany token przez wywołanie Id Magico
|
||||||
|
- Automatycznie tworzy sesję po pozytywnej weryfikacji
|
||||||
|
- Nie wymaga dodatkowego wywołania API przez klienta
|
||||||
|
|
||||||
```
|
### Odpowiedź do aplikacji klienckiej
|
||||||
POST /v1/auth/session
|
|
||||||
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGc...
|
|
||||||
Accept: application/json
|
|
||||||
```
|
|
||||||
|
|
||||||
### Odpowiedź sukces (200)
|
Po pomyślnym ustawieniu sesji wewnętrznie:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -112,7 +110,7 @@ Accept: application/json
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Odpowiedź błąd (401)
|
### Błędy autoryzacji
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -222,11 +220,10 @@ Zmienna środowiskowa: `magico.auth.serwer` (np. `https://id.magico.pro/`).
|
|||||||
|
|
||||||
1. **Generuj link** do Id Magico (Krok 1.1) i przekieruj użytkownika.
|
1. **Generuj link** do Id Magico (Krok 1.1) i przekieruj użytkownika.
|
||||||
2. Po zalogowaniu Id Magico przekierowuje na `redirect_uri` z parametrem `code`.
|
2. Po zalogowaniu Id Magico przekierowuje na `redirect_uri` z parametrem `code`.
|
||||||
3. **Wymień `code` na token** – POST do Id Magico `/oauth/token` (Krok 1.2).
|
3. **Wymień `code` na token i ustaw sesję** – POST do Id Magico `/oauth/token` (Krok 1.2), następnie backend TravelManager automatycznie weryfikuje token i ustawia sesję wewnętrznie.
|
||||||
4. **Ustaw sesję** – `POST v1/auth/session` z nagłówkiem `Authorization: Bearer {access_token}`.
|
4. API zwraca `200` z ustawioną sesją (ciastko `app_session`).
|
||||||
5. API zwraca `200` i ustawia sesję (ciastko `app_session`).
|
5. Kolejne żądania do chronionych endpointów wysyłają ciastko sesji.
|
||||||
6. Kolejne żądania do chronionych endpointów wysyłają ciastko sesji.
|
6. Przy wylogowaniu: `POST v1/auth/logout`.
|
||||||
7. Przy wylogowaniu: `POST v1/auth/logout`.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -260,9 +257,8 @@ sequenceDiagram
|
|||||||
IdMagico->>App: access_token
|
IdMagico->>App: access_token
|
||||||
Note left of IdMagico: {<br/>"access_token": "eyJ...",<br/>"token_type": "Bearer",<br/>"expires_in": 3600<br/>}
|
Note left of IdMagico: {<br/>"access_token": "eyJ...",<br/>"token_type": "Bearer",<br/>"expires_in": 3600<br/>}
|
||||||
|
|
||||||
App->>API: Ustawienie sesji
|
Note over App, API: Backend TravelManager automatycznie ustawia sesję
|
||||||
Note right of App: POST /v1/auth/session<br/>Authorization: Bearer {access_token}
|
App->>API: Przekazanie tokena (wewnętrznie)
|
||||||
|
|
||||||
API->>IdMagico: Weryfikacja tokena
|
API->>IdMagico: Weryfikacja tokena
|
||||||
Note right of API: GET /api/v1/authorize/me<br/>Authorization: Bearer {access_token}
|
Note right of API: GET /api/v1/authorize/me<br/>Authorization: Bearer {access_token}
|
||||||
|
|
||||||
@@ -270,7 +266,7 @@ sequenceDiagram
|
|||||||
Note left of IdMagico: {<br/>"user": {...},<br/>"company_id": 123,<br/>"role": "admin"<br/>}
|
Note left of IdMagico: {<br/>"user": {...},<br/>"company_id": 123,<br/>"role": "admin"<br/>}
|
||||||
|
|
||||||
alt Użytkownik ma prawidłowy token
|
alt Użytkownik ma prawidłowy token
|
||||||
API->>API: Utworzenie sesji
|
API->>API: Automatyczne utworzenie sesji
|
||||||
API->>App: Sukces (200)
|
API->>App: Sukces (200)
|
||||||
Note left of API: {<br/>"status": true,<br/>"message": "is login"<br/>}<br/>+ cookie app_session
|
Note left of API: {<br/>"status": true,<br/>"message": "is login"<br/>}<br/>+ cookie app_session
|
||||||
App->>User: Zalogowany - dostęp do aplikacji
|
App->>User: Zalogowany - dostęp do aplikacji
|
||||||
@@ -298,8 +294,7 @@ sequenceDiagram
|
|||||||
## Endpointy chronione
|
## Endpointy chronione
|
||||||
|
|
||||||
Endpointy z filtrem `login` (np. `v1/project`, `v1/ticket`, `v1/setting`) wymagają:
|
Endpointy z filtrem `login` (np. `v1/project`, `v1/ticket`, `v1/setting`) wymagają:
|
||||||
- poprawnej sesji (ciastko `app_session`), lub
|
- poprawnej sesji (ciastko `app_session`) ustawionej podczas procesu autoryzacji.
|
||||||
- wcześniejszego wywołania `POST v1/auth/session` z tokenem Bearer.
|
|
||||||
|
|
||||||
Brak sesji skutkuje odpowiedzią **401 Unauthorized**:
|
Brak sesji skutkuje odpowiedzią **401 Unauthorized**:
|
||||||
```json
|
```json
|
||||||
|
|||||||
Reference in New Issue
Block a user