Flow: „Resource Owner Password Credentials”
Rodzaj aplikacji, w której nie ma interakcji z użytkownikiem (np. skrypt CLI uruchamiany w tle).
Aplikacja uwierzytelnia się przesyłając dane autoryzacyjne wraz z loginem i hasłem użytkownika. Po udanym uwierzytelnianiu otrzymuje Access Token oraz Id Token (https://auth0.com/docs/tokens). Oba tokeny wykorzystywane są do autoryzacji w xSale REST API.
Potrzebna jest lista adresów e-mail użytkowników, którzy mają otrzymać dostęp do xSale REST API.
Żeby autoryzować aplikację i otrzymać tokeny potrzebne do wykonywania akcji w xSale REST API, trzeba wykonać żądanie na adres POST https://login.futuriti.pl/oauth/token wraz z odpowiednimi danymi.
client_id: {client_id},
client_secret: {client_secret},
audience: "https://api.xsale.ai",
username: {your_email},
password: {your_password},
grant_type: "password",
scope: "openid profile email xsale production"
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...", \
"audience": "https://api.xsale.ai", \
"username": "loremipsum@futuriti.pl", \
"password": "MyPass", \
"grant_type": "password", \
"scope": "openid profile email xsale production" \
}'
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
"scope": "openid profile email xsale production",
"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/call-your-api-using-resource-owner-password-flow#request-tokens
https://auth0.com/docs/api/authentication#resource-owner-password