# Autorizace: ApiKey, Credentials nebo OAuth 2.0

Řešení GeoPard používá [AWS Cognito](https://docs.aws.amazon.com/en_us/cognito/latest/developerguide/what-is-amazon-cognito.html) pro ověřovací proceduru.

Doporučujeme zkontrolovat všechny možnosti autorizace. Volba závisí na konkrétním použití. Podrobnější informace o použití jsou popsány v každé z možností níže.

## Možnost 1: Použití přihlašovacích údajů

Autorizace pomocí „uživatelského jména“ a „hesla“ je jedním z možných přístupů. V tomto případě musí být registrace e-mailem provedena (nepoužívat sociální sítě).&#x20;

{% hint style="info" %}
Tento přístup ***se doporučuje pro integraci na úrovni API (BackEnd)*** a všechny požadavky na GeoPard API jsou proxyovány přes dedikovanou speciální službu (mikroslužbu).
{% endhint %}

### Požadavek na přihlášení&#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 %}

### Odpověď na přihlášení

{% hint style="danger" %}
Token je JWT s životností 30 minut.\
\
Nejlepší praxe je uložit jeden token a znovu jej používat pro všechny požadavky, kontrolovat jeho dobu vypršení a získat nový token, když vyprší (nebo krátce před tím).
{% endhint %}

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

## Možnost 2: OAuth 2.0

AWS Cognito podporuje protokol OAuth 2.0 pro autorizaci. Obecný přehled je popsán v článku [Cognito OAuth2 manuál](https://aws.amazon.com/ru/blogs/mobile/understanding-amazon-cognito-user-pool-oauth-2-0-grants/), podčlánek Authorization Code Grant je v případě GeoPard nejzajímavější.&#x20;

{% hint style="info" %}
Tento přístup ***doporučuje se integrovat GeoPard na úrovni uživatelského rozhraní (FrontEnd)***. Integrace funguje oběma směry pro odesílání/přijímání dat do/od GeoPard.
{% endhint %}

Krátce řečeno:

1. Vaše aplikace musí přesměrovat uživatele na GeoPard Cognito pro přihlášení nebo registraci.&#x20;

Příklad:

{% 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 %}

Prosím, spojte se s týmem GeoPard, abyste obdrželi individuální `client_id`.

2. Přesměrovaná URL obdrží ověřovací `kód` pro další krok.

Přesměrovaná URL vypadá takto [`http://localhost:8080/?code=eb10956a-6d51-49e5-bbfe-9815e3fdc70a&state=54321`](http://localhost:8080/?code=eb10956a-6d51-49e5-bbfe-9815e3fdc70a\&state=54321).

3. Vaše aplikace musí vyměnit `kód` pro `tokeny` (`access_token`, `refresh_token`, `id_token`).

Příklad:

{% 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 %}

## Možnost 3: API klíč

Rychlý přístup k WMS a WFS je čas od času nutný. Proto je možné použít GeoPard API klíč automaticky generovaný pro každý účet.

API klíč lze najít v `apiKlic` atributu entity GraphQL "UserData". Pokyny, jak získat  `apiKlic` jsou uvedeny [ZDE](https://docs.geopard.tech/geopard-tutorials/cze/api-dokumentace/prehled-pozadavku-geopard-api/38.-query-ziskat-userdata).

{% hint style="danger" %}
`apiKlic` musí být používán s `/geo` koncovými body POUZE.
{% endhint %}

Použití:

1. Jako `geopardApiKey` parametr v URL GET požadavku.
2. Jako `X-API-Key` hlavička v JAKÉMKOLI požadavku.<br>
