# Autorisatie: ApiKey, Credentials of OAuth 2.0

De GeoPard-oplossing maakt gebruik van [AWS Cognito](https://docs.aws.amazon.com/en_us/cognito/latest/developerguide/what-is-amazon-cognito.html) voor de authenticatieprocedure.

We raden aan alle autorisatie-opties te controleren. De keuze hangt af van de specifieke use-case. Meer gebruiksdetails worden per optie hieronder beschreven.

## Optie 1: Gebruik van referenties

Autorisatie met “gebruikersnaam” en “wachtwoord” is een van de mogelijke benaderingen. In dit geval moet e-mailregistratie worden gedaan (niet via sociale netwerken).&#x20;

{% hint style="info" %}
De aanpak ***wordt aanbevolen voor integratie op API (BackEnd)-niveau*** en alle aanvragen naar de GeoPard API worden geproxied via een speciale service (microservice).
{% endhint %}

### Login-verzoek&#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 %}

### Login-antwoord

{% hint style="danger" %}
De token is een JWT met een levensduur van 30 minuten.\
\
Het is best practice om één token op te slaan en deze hergebruiken voor alle aanvragen, de vervaltijd te controleren en een nieuwe token op te halen wanneer deze verloopt (of kort ervoor).
{% endhint %}

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

## Optie 2: OAuth 2.0

AWS Cognito ondersteunt het OAuth 2.0-protocol voor autorisatie. Een algemeen overzicht wordt beschreven in het artikel [Cognito OAuth2-handleiding](https://aws.amazon.com/ru/blogs/mobile/understanding-amazon-cognito-user-pool-oauth-2-0-grants/), het subartikel Authorization Code Grant is het meest interessant in het GeoPard-geval.&#x20;

{% hint style="info" %}
De aanpak ***wordt aanbevolen om GeoPard te integreren op het gebruikersinterface (FrontEnd)-niveau***. De integratie werkt in beide richtingen om gegevens naar/van GeoPard te verzenden/ontvangen.
{% endhint %}

Kort samengevat:

1. Uw applicatie moet een gebruiker doorsturen naar GeoPard Cognito voor login of registratie.&#x20;

Voorbeeld:

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

Neem contact op met het GeoPard-team om uw individuele applicatie `client_id`.

2. De doorgestuurde URL ontvangt een verificatie `code` voor de volgende stap.

De doorgestuurde URL ziet er als volgt uit [`http://localhost:8080/?code=eb10956a-6d51-49e5-bbfe-9815e3fdc70a&state=54321`](http://localhost:8080/?code=eb10956a-6d51-49e5-bbfe-9815e3fdc70a\&state=54321).

3. Uw applicatie moet `code` voor `tokens` (`access_token`, `refresh_token`, `id_token`).

Voorbeeld:

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

## Optie 3: API-sleutel

Snelle toegang tot WMS en WFS is af en toe noodzakelijk. Daarom is het mogelijk de automatisch voor elk account gegenereerde GeoPard API-sleutel te gebruiken.

De API-sleutel is te vinden in de `apiSleutel` attribuut van de "UserData" GraphQL-entiteit. Instructies over hoe  `apiSleutel` opgevraagd kunnen worden [HIER](/geopard-tutorials/nl/api-docs/overzicht-van-api-verzoeken-van-geopard/38.-query-userdata-ophalen.md).

{% hint style="danger" %}
`apiSleutel` moet worden gebruikt met `/geo` endpoints ALLEEN.
{% endhint %}

Gebruik:

1. Als een `geopardApiKey` parameter in de GET-verzoek-URL.
2. Als een `X-API-Key` header in ELK verzoek.<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/nl/api-docs/autorisatie-apikey-credentials-of-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.
