# Autorizācija: ApiKey, Credentials vai OAuth 2.0

GeoPard risinājumā tiek izmantots [AWS Cognito](https://docs.aws.amazon.com/en_us/cognito/latest/developerguide/what-is-amazon-cognito.html) autentifikācijas procedūrai.

Mēs iesakām pārbaudīt visas autorizācijas iespējas. Izvēle ir atkarīga no konkrētā lietošanas gadījuma. Papildu izmantošanas detaļas ir aprakstītas katrā zemāk esošajā variantā.

## 1. variants: izmantojot akreditācijas datus

Autorizācija ar “lietotājvārdu” un “paroli” ir viens no iespējamiem pieejām. Šajā gadījumā jāveic reģistrācija, izmantojot e-pastu (neizmantojot sociālos tīklus).&#x20;

{% hint style="info" %}
Šo pieeju ***iesaka integrēt API (BackEnd) līmenī*** un visi pieprasījumi uz GeoPard API tiek prox-oti caur speciālu pakalpojumu (mikropakalpojumu).
{% endhint %}

### Pieteikšanās pieprasījums&#x20;

{% code overflow="wrap" lineNumbers="true" %}

```bash
curl --location --request POST 'https://api.geopard.tech/login' \
--header 'Content-Type: application/json' \
--header 'Content-Type: text/plain' \
--data-raw '{"username":"<email_address>","password":"<password>"}'
```

{% endcode %}

### Pieteikšanās atbilde

{% hint style="danger" %}
Žetons ir JWT ar derīguma termiņu 30 minūtes.\
\
Ir ieteicams saglabāt vienu žetonu un izmantot to visos pieprasījumos, pārbaudot tā derīguma laiku un iegūstot jaunu žetonu, kad tas beidzas (vai drīz pirms tam).
{% endhint %}

```json
{
    "token": "<token_to_use_in_geopard_api>"
}
```

## 2. variants: OAuth 2.0

AWS Cognito atbalsta OAuth 2.0 autorizācijas protokolu. Vispārīgs pārskats ir aprakstīts rakstā [Cognito OAuth2 rokasgrāmata](https://aws.amazon.com/ru/blogs/mobile/understanding-amazon-cognito-user-pool-oauth-2-0-grants/), apakšrakstā Authorization Code Grant ir visinteresantākā GeoPard gadījumā.&#x20;

{% hint style="info" %}
Šo pieeju ***iesaka integrēt GeoPard Lietotāja saskarnes (FrontEnd) līmenī***. Integrācija darbojas abos virzienos, lai sūtītu/saņemtu datus uz/no GeoPard.
{% endhint %}

Īsi sakot:

1. Jūsu lietotne ir jānovirza lietotājs uz GeoPard Cognito, lai pieteiktos vai reģistrētos.&#x20;

Piemērs:

{% code overflow="wrap" lineNumbers="true" %}

```bash
curl --location --request GET '
https://auth.geopard.tech/oauth2/authorize?response_type=code&client_id=<connect_geopard_team>&redirect_uri=http://localhost:8080&state=54321
'
```

{% endcode %}

Lūdzu, sazinieties ar GeoPard komandu, lai saņemtu jūsu lietotnei individuālu `client_id`.

2. Novirzītā URL saņems verifikācijas `kodē` nākamajai darbībai.

Novirzītā URL izskatās kā [`http://localhost:8080/?code=eb10956a-6d51-49e5-bbfe-9815e3fdc70a&state=54321`](http://localhost:8080/?code=eb10956a-6d51-49e5-bbfe-9815e3fdc70a\&state=54321).

3. Jūsu lietotnei ir jāapmainās ar `kodē` par `žetoniem` (`access_token`, `refresh_token`, `id_token`).

Piemērs:

{% code overflow="wrap" lineNumbers="true" %}

```bash
curl --location --request POST '
https://auth.geopard.tech/oauth2/token
' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: XSRF-TOKEN=365e14e1-3c66-477e-b0ef-a9e436a834ee; csrf-state=""; csrf-state-legacy=""' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'code=eb10956a-6d51-49e5-bbfe-9815e3fdc70a' \
--data-urlencode 'client_id=42ajne9u466in6gaf569nth9o9' \
--data-urlencode 'redirect_uri=
http://localhost:8080
'
```

{% endcode %}

## 3. variants: API atslēga

Ātra piekļuve WMS un WFS dažkārt ir nepieciešama. Tāpēc ir iespējams izmantot GeoPard API atslēgu, kas tiek automātiski ģenerēta katram kontam.

API atslēgu var atrast `apiAtslēga` atribūtā "UserData" GraphQL entītijā. Norādījumi par to, kā izgūt  `apiAtslēga` ir sniegti [ŠEIT](https://docs.geopard.tech/geopard-tutorials/lva/api-dokumentacija/pieprasijumu-parskats/38.-vaicajums-sanemt-userdata).

{% hint style="danger" %}
`apiAtslēga` jāizmanto ar `/geo` galapunktiem TIKAI.
{% endhint %}

Izmantošana:

1. Kā `geopardApiKey` parametrs GET pieprasījuma URL.
2. Kā `X-API-Key` galvene JEBKURĀ pieprasījumā.<br>
