>

help-user-access

help-user-access - GearCode

oAuth - dostęp jako użytkownik

Authorization code

1. Pozyskanie kodu autoryzującego

W celu pozyskania kodu, który następnie będzie mógł zostać wymieniony na właściwe tokeny służące autoryzacji, należy użytkownika przekierować na adres:

https://[authorization_server_url]/oauth/authorize?redirect_uri=[redirect_uri]&client_id=[client_id]&response_type=code



[authorization_server_url] – adres serwera autoryzującego, np. auth.gearcode.eu
[client_id] – identyfikator aplikacji (1), do której loguje się użytkownik. Aplikacja musi zostać wcześniej utworzona w GC.AUTH.
[redirect_uri] – adres URL, na który zostanie przekazany kod autoryzacyjny. Wskazany adres musi zostać wcześniej dodany do listy adresów dozwolonych (2).

Po udanym zalogowaniu się użytkownika w GC.AUTH, zostanie on przekierowany na adres [redirect_uri], do którego zostanie dołączony kod autoryzacyjny.
Dla aplikacji opisanej powyżej żądanie i odpowiedź będzie wyglądać następująco:

https://[authorization_server_url] /oauth/authorize?redirect_uri=https%3A%2F%2Fmy.sample.webapp.com%2Fauth-callback&client_id=sample.webapp.fe9d3e203b164c7e8896369673003291&response_type=code
https://my.sample.webapp.com/auth-callback?code=XC3pJl56JP_N8VET3x...pY7h7XCjw.

2. Wymiana kodu autoryzacyjnego na tokeny
W celu wymiany kodu autoryzacyjnego na tokeny należy bezpiecznym kanałem* wywołać żądanie HTTP:


POST /oauth/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
code=[code]&grant_type=authorization_code&client_id=[client_id] &client_secret=[client_secret]&resource_id=[client_id]

[client_secret] – tajny klucz aplikacji; musi być przechowywany w sposób bezpieczny. Klucz można pozyskać w GC.AUTH(1).


Jeżeli przesłane dane są poprawne to w odpowiedzi zostają zwrócone informacje o tokenach:
{
    "access_token": "eyJhbGciOi…cP6zb4",
    "token_type": "bearer",
    "expires_in": 899,
    "refresh_token": "ILLu1L5ks…8DZQ"
}

* - poprzez bezpieczny kanał rozumiana jest komunikacja typu serwer-serwer, z całkowitym pominięciem user agent w tejże komunikacji.

Refresh token


Pozyskany access_token należy cyklicznie odświeżać przy użyciu refresh_token. W tym celu należy wywołać żądanie HTTP:

POST /oauth/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token=[refresh_token] &client_id=[client_id]&resource_id=[client_id]&client_secret=[client_secret]


Jeżeli przesłane dane są poprawne to w odpowiedzi zostają zwrócone informacje o tokenach:

{
    "access_token": "eyJhbGciOi…ZWU1Y2U0",
    "token_type": "bearer",
    "expires_in": 899,
    "refresh_token": "mKhyYrlh…xWIyp"
}