# Autorisering: ApiKey, Credentials eller OAuth 2.0

GeoPard-løsningen bruger [AWS Cognito](https://docs.aws.amazon.com/en_us/cognito/latest/developerguide/what-is-amazon-cognito.html) til godkendelsesproceduren.

Vi anbefaler at tjekke alle autorisationsmuligheder. Valget afhænger af den konkrete brugssag. Flere brugsdetaljer er beskrevet under hver mulighed nedenfor.

## Valgmulighed 1: Brug af legitimationsoplysninger

Godkendelse med “brugernavn” og “adgangskode” er en af de mulige tilgange. I dette tilfælde skal e-mail-registrering foretages (ikke ved brug af sociale netværk).&#x20;

{% hint style="info" %}
Tilgangen ***anbefales til integration på API- (BackEnd-) niveau*** og alle forespørgsler til GeoPard API proxyes via en dedikeret specialtjeneste (microservice).
{% endhint %}

### Login-anmodning&#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-svar

{% hint style="danger" %}
Tokenet er et JWT med en levetid på 30 minutter.\
\
Det er bedste praksis at gemme ét token og genbruge det på tværs af alle forespørgsler, kontrollere dets udløbstid og hente et nyt token, når det udløber (eller kort før).
{% endhint %}

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

## Valgmulighed 2: OAuth 2.0

AWS Cognito understøtter OAuth 2.0-protokollen til autorisation. Den generelle oversigt er beskrevet i artiklen [Cognito OAuth2-manual](https://aws.amazon.com/ru/blogs/mobile/understanding-amazon-cognito-user-pool-oauth-2-0-grants/), underartiklen Authorization Code Grant er den mest interessante i GeoPard-tilfælde.&#x20;

{% hint style="info" %}
Tilgangen ***anbefales til integration af GeoPard på brugergrænsefladen (FrontEnd-) niveau***. Integration fungerer i begge retninger for at sende/modtage data til/fra GeoPard.
{% endhint %}

For at holde det kort:

1. Din applikation skal omdirigere en bruger til GeoPard Cognito for login eller registrering.&#x20;

Eksempel:

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

Kontakt venligst GeoPard-teamet for at modtage din applikations individuelle `client_id`.

2. Den videresendte URL vil modtage en verifikations `code` til næste trin.

Den videresendte URL ser sådan ud [`http://localhost:8080/?code=eb10956a-6d51-49e5-bbfe-9815e3fdc70a&state=54321`](http://localhost:8080/?code=eb10956a-6d51-49e5-bbfe-9815e3fdc70a\&state=54321).

3. Din applikation skal udveksle `code` for `tokens` (`access_token`, `refresh_token`, `id_token`).

Eksempel:

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

## Valgmulighed 3: API-nøgle

Hurtig adgang til WMS og WFS er nogle gange nødvendig. Derfor er det muligt at bruge GeoPard API-nøglen, der automatisk genereres for hver konto.

API-nøglen kan findes i `apiNøgle` attributten af "UserData" GraphQL-entiteten. Instruktioner om, hvordan man henter  `apiNøgle` er angivet [HER](/geopard-tutorials/dnk/api-dokumentation/oversigt-over-geopard-api-anmodninger/38.-foresporgsel-hent-userdata.md).

{% hint style="danger" %}
`apiNøgle` skal bruges med `/geo` endpoints KUN.
{% endhint %}

Brug:

1. Som en `geopardApiKey` parameter i GET-forespørgslens URL.
2. Som en `X-API-Key` header i ENHVER forespørgsel.<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/dnk/api-dokumentation/autorisering-apikey-credentials-eller-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.
