1. Home
  2. Docs
  3. API xSale
  4. Autoryzacja aplikacji z API xSale
  5. Aplikacja: „Regular Web Application”

Aplikacja: „Regular Web Application”

Flow: „Authorization Code”

Rodzaj aplikacji, w której użytkownik przekierowany jest na stronę logowania i poproszony o podanie loginu oraz hasła.
Po udanej próbie logowania, aplikacja otrzymuje Access Token oraz ID Token (https://auth0.com/docs/tokens). Oba tokeny wykorzystywane są do autoryzacji w xSale REST API.

W przypadku „Regular Web Application” potrzebujemy znać następujące adresy:
– Adres logowania, który przekierowuje na formularz logowania Auth0 (np. https://myapp.com/login).
– Adres callback, pod który wysłany zostanie kod autoryzacyjny (authorization_code) potrzebny do wygenerowania tokena (np. https://myapp.com/oauth/callback).
– Adres wylogowania, na który zostanie przekierowany użytkownik po wylogowaniu się z Auth0 (np. https://myapp.com/seeyou).
Potrzebna jest również lista adresów e-mail użytkowników, którzy mają otrzymać dostęp do xSale REST API.
Żeby autoryzować i uwierzytelnić użytkownika, trzeba zaimplementować logowanie w formie dwóch prostych kroków.

Krok 1
Wysłanie żądania pod adres GET https://login.futuriti.pl/authorize z danymi:

client_id: {client_id},
audience: "https://api.xsale.ai",
response_type: "code"
scope: "openid profile email xsale production",
redirect_uri: "https://myapp.com/oauth/callback"

Przykładowe żądanie:

GET https://login.futuriti.pl/authorize?
client_id=wWghQGgMuaISx9qEjWi...&
audience=https://api.xsale.ai&
response_type=code&
scope=openid profile email xsale production&
redirect_uri=https://myapp.com/oauth/callback

Jeśli wszystko przebiegnie pomyślnie, serwer autoryzacyjny odpowie kodem 302 Location https://myapp.com/oauth/callback?code=3Zi60-OIMQBo9…
Zwróć uwagę, że w linku przekierowania znajduje się parametr „code”. Jego wartość to kod autoryzacyjny potrzebny do wykonania drugiego kroku.

Krok 2
Wysłanie żądania pod adres POST https://login.futuriti.pl/oauth/token z danymi:

client_id: {client_id},
client_secret: {client_secret},
grant_type: "authorization_code",
code: {code},
redirect_uri=https://myapp.com/oauth/callback

Przykładowe żądanie wysłane za pomocą CURL:

curl -X POST \
--url 'https://login.futuriti.pl/oauth/token'
--header 'Content-Type: application/json'
--header 'Accept: application/json' \
--data '{ \
"client_id": "wWghQGgMuaISx9qEjWi...", \
"client_secret": "vM4a6raBWfKA2VqjZWqu3Er-hRTm...", \
"grant_type": "authorization_code", \
"code": "3Zi60-OIMQBo9...", \
"redirect_uri": "https://myapp.com/oauth/callback" \
}'

Po poprawnym przesłaniu danych, serwer autoryzacyjny zwróci potrzebne tokeny.
Przykładowa odpowiedź z serwera autoryzacyjnego:
JSON

{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI...", //token autoryzacyjny
"id_token": "eyJodHRwczovL2Z1dHVyaXRpLnBsL3VzZXJf...", //token uwierzytelniający
"expires_in": 86400, //czas życia tokenów liczony w sekundach
"token_type": "Bearer"
}

Do autoryzacji/uwierzytelnienia w xSale REST API, potrzebne są oba tokeny – „access_token” i „id_token”.

UWAGA! Tokeny powinny być przetrzymywane jak najdłużej, najlepiej do momentu wygaśnięcia. Generowanie nowego tokena za każdym żądaniem do xSale REST API może spowodować wyczerpanie limitu i być odrzucone przez serwer autoryzacyjny.

Więcej pod adresem:
https://auth0.com/docs/flows/add-login-auth-code-flow#authorize-user
https://auth0.com/docs/api/authentication#authorization-code-flow