# Autoryzacja: ApiKey, dane uwierzytelniające lub OAuth 2.0

Rozwiązanie GeoPard używa [AWS Cognito](https://docs.aws.amazon.com/en_us/cognito/latest/developerguide/what-is-amazon-cognito.html) do procedury uwierzytelniania.

Zalecamy sprawdzenie wszystkich opcji autoryzacji. Wybór zależy od konkretnego przypadku użycia. Więcej szczegółów dotyczących użycia opisano w każdej opcji poniżej.

## Opcja 1: Użycie poświadczeń

Autoryzacja za pomocą „nazwa użytkownika” i „hasło” jest jednym z możliwych podejść. W tym przypadku rejestracja przez e‑mail musi być wykonana (bez użycia sieci społecznościowych).&#x20;

{% hint style="info" %}
Podejście ***jest zalecane do integracji na poziomie API (BackEnd)*** i wszystkie żądania do API GeoPard są proxyfowane przez dedykowaną specjalną usługę (mikrousługę).
{% endhint %}

### Żądanie logowania&#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 %}

### Odpowiedź na logowanie

{% hint style="danger" %}
Token jest JWT o czasie życia 30 minut.\
\
Dobrą praktyką jest przechowywanie pojedynczego tokenu i ponowne jego wykorzystywanie we wszystkich żądaniach, sprawdzając czas wygaśnięcia i pobierając nowy token, gdy wygaśnie (lub krótko przed wygaśnięciem).
{% endhint %}

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

## Opcja 2: OAuth 2.0

AWS Cognito obsługuje protokół OAuth 2.0 dla autoryzacji. Ogólny przegląd opisano w artykule [Podręcznik Cognito OAuth2](https://aws.amazon.com/ru/blogs/mobile/understanding-amazon-cognito-user-pool-oauth-2-0-grants/), podartykuł Authorization Code Grant jest najbardziej interesujący w przypadku GeoPard.&#x20;

{% hint style="info" %}
Podejście ***jest zalecane integrowanie GeoPard na poziomie interfejsu użytkownika (FrontEnd)***. Integracja działa w obie strony w celu wysyłania/odbierania danych do/z GeoPard.
{% endhint %}

W skrócie:

1. Twoja aplikacja musi przekierować użytkownika do GeoPard Cognito w celu zalogowania się lub rejestracji.&#x20;

Przykład:

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

Prosimy o kontakt z zespołem GeoPard, aby otrzymać indywidualny dla Twojej aplikacji `client_id`.

2. Przekierowany URL otrzyma weryfikacyjny `kod` do następnego kroku.

Przekierowany URL wygląda jak [`http://localhost:8080/?code=eb10956a-6d51-49e5-bbfe-9815e3fdc70a&state=54321`](http://localhost:8080/?code=eb10956a-6d51-49e5-bbfe-9815e3fdc70a\&state=54321).

3. Twoja aplikacja musi wymienić `kod` dla `tokeny` (`access_token`, `refresh_token`, `id_token`).

Przykład:

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

## Opcja 3: Klucz API

Szybki dostęp do WMS i WFS jest od czasu do czasu konieczny. Dlatego można użyć klucza API GeoPard automatycznie generowanego dla każdego konta.

Klucz API można znaleźć w `kluczApi` atrybucie encji GraphQL "UserData". Instrukcje, jak pobrać  `kluczApi` są podane [TUTAJ](/geopard-tutorials/pl/dokumentacja-api/przeglad-zapytan-api-geopard/38.-zapytanie-pobierz-userdata.md).

{% hint style="danger" %}
`kluczApi` musi być używany z `/geo` punktami końcowymi TYLKO.
{% endhint %}

Użycie:

1. Jako `geopardApiKey` parametr w URL żądania GET.
2. Jako `nagłówek X-API-Key` we WszELKIM żądaniu.<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.geopard.tech/geopard-tutorials/pl/dokumentacja-api/autoryzacja-apikey-dane-uwierzytelniajace-lub-oauth-2.0.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
