oAuth - dostęp jako użytkownikAuthorization 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"
}
|