> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/on-premises/da/konfiguration/overleaf-toolkit/authentication/oidc-authentication.md).

# OIDC-godkendelse

Denne funktion er udviklet af [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Her tilbyder vi nogle dokumenter til din konfiguration.

### Konfiguration

Internt bruger Overleaf OIDC-modulet [passport-openidconnect](https://github.com/jaredhanson/passport-openidconnect) biblioteket. Hvis du har problemer med at konfigurere OpenID Connect, kan det være værd at læse README-filen for `passport-openidconnect` for at få en fornemmelse af den konfiguration, den forventer.

Miljøvariablen `EXTERNAL_AUTH` er påkrævet for at aktivere OIDC-autentificeringsmodulet. Denne miljøvariabel angiver, hvilke eksterne autentificeringsmetoder der er aktiveret. Værdien af denne variabel er en liste. Hvis listen inkluderer `oidc` så vil OIDC-autentificering blive aktiveret.

For eksempel: `EXTERNAL_AUTH=ldap oidc`

Når du bruger OIDC-autentificeringsmetoden, omdirigeres en bruger til autentificeringssiden hos Identity Provider (IdP). Hvis IdP'en autentificerer brugeren med succes, kontrolleres Overleafs brugerdatabase for en post, der indeholder en `thirdPartyIdentifiers` felt struktureret som følger:

```
thirdPartyIdentifiers: [
  {
    externalUserId: "...",
    externalData: null,
    providerId: "..."
  }
]
```

Den `externalUserId` skal matche bruger-id'et i profilen, der returneres af IdP-serveren (se `OVERLEAF_OIDC_USER_ID_FIELD` miljøvariabel), og `providerId` skal matche ID'et for OIDC-udbyderen (se `OVERLEAF_OIDC_PROVIDER_ID`).

Hvis der ikke findes nogen matchende post, søges der i databasen efter en bruger med den primære e-mailadresse, der matcher e-mailen i IdP-brugerprofilen:

* Hvis en sådan bruger findes, opdateres `thirdPartyIdentifiers` feltet.
* Hvis ingen matchende bruger findes, og JIT-oprettelse af konti ikke er deaktiveret, oprettes der en ny bruger med e-mailadressen og `thirdPartyIdentifiers` fra IdP-profilen.

I begge tilfælde siges brugeren at være 'linket' til den eksterne OIDC-bruger. Brugeren kan aflinkes fra OIDC-udbyderen på `/user/settings` siden.

#### Miljøvariabler

Værdierne for de følgende fem påkrævede variabler kan findes ved hjælp af `.well-known/openid-configuration` endpoint på din OpenID-udbyder (OP).

* `OVERLEAF_OIDC_ISSUER` **(påkrævet)**
* `OVERLEAF_OIDC_AUTHORIZATION_URL` **(påkrævet)**
* `OVERLEAF_OIDC_TOKEN_URL` **(påkrævet)**
* `OVERLEAF_OIDC_USER_INFO_URL` **(påkrævet)**
* `OVERLEAF_OIDC_LOGOUT_URL` **(påkrævet)**

Værdierne for de følgende to påkrævede variabler vil blive leveret af administratoren af din OP

* `OVERLEAF_OIDC_CLIENT_ID` **(påkrævet)**
* `OVERLEAF_OIDC_CLIENT_SECRET` **(påkrævet)**
* `OVERLEAF_OIDC_SCOPE`
  * Standard: `openid profile email`
* `OVERLEAF_OIDC_PROVIDER_ID`
  * Vilkårligt ID for OP'en, standard er `oidc`.
* `OVERLEAF_OIDC_PROVIDER_NAME`
  * Navnet på OP'en, bruges på `Tilknyttede konti` sektionen i `/user/settings` siden, standard er `OIDC-udbyder`.
* `OVERLEAF_OIDC_IDENTITY_SERVICE_NAME`
  * Visningsnavn for identitetstjenesten, bruges på login-siden (standard: `Log ind med $OVERLEAF_OIDC_PROVIDER_NAME`).
* `OVERLEAF_OIDC_PROVIDER_DESCRIPTION`
  * Beskrivelse af OP'en, bruges i `Tilknyttede konti` afsnittet (standard: `Log ind med $OVERLEAF_OIDC_PROVIDER_NAME`).
* `OVERLEAF_OIDC_PROVIDER_INFO_LINK`
  * `Læs mere` URL i OP-beskrivelsen, standard: ingen `Læs mere` link i beskrivelsen.
* `OVERLEAF_OIDC_PROVIDER_HIDE_NOT_LINKED`
  * Vis ikke OP'en på `/user/settings` siden, hvis brugerens konto ikke er tilknyttet OP'en, standard `false`.
* `OVERLEAF_OIDC_USER_ID_FIELD`
  * Værdien af denne attribut vil blive brugt af Overleaf som det eksterne bruger-id, standard er `id`. Andre mulige rimelige værdier er `email` og `brugernavn` (svarende til `preferred_username` OIDC-claim).
* `OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS`
  * Begrænser Just-in-Time (JIT)-oprettelse af konti for brugere, der autentificerer via OIDC. Hvis det er sat til en kommasepareret liste over domænenavne, oprettes der kun en ny konto, hvis domænet i brugerens e-mailadresse matcher et af de angivne domæner. Hvis domænet ikke matcher, skal en administrator manuelt oprette brugerkontoen ved hjælp af OIDC-brugerens e-mailadresse, med enten en stærk tilfældig adgangskode eller, helst, uden `hashedPassword` feltet overhovedet. Domænenavne kan omfatte en indledende `*.` jokertegn til at matche underdomæner.
    * Eksempel: For at tillade JIT-oprettelse af konti for brugere med e-mailadresser som `name@example.com` og `name@math.example.com`:\
      `OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=example.com, *.example.com`
    * Eksempel: For at deaktivere JIT-oprettelse af konti helt:\
      `OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=`
* `OVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN`
  * Hvis sat til `true`, opdaterer brugerens `first_name` og `last_name` felt ved login og deaktiverer formularen for brugeroplysninger på `/user/settings` siden.
* `OVERLEAF_OIDC_IS_ADMIN_FIELD` og `OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE`
  * Når begge miljøvariabler er angivet, opdaterer loginprocessen `user.isAdmin = true` hvis profilen returneret af OP'en indeholder attributten angivet af `OVERLEAF_OIDC_IS_ADMIN_FIELD` og dens værdi matcher `OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE`, ellers `user.isAdmin` sættes til `false`. Hvis `OVERLEAF_OIDC_IS_ADMIN_FIELD` er `email` så bruges værdien af attributten `emails[0].value` til matchkontrol.

Omdirigerings-URL'en for din OpenID-udbyder er `https://my-overleaf-instance.com/oidc/login/callback`.

<details>

<summary>Eksempel på variables.env-fil</summary>

{% code title="variables.env" overflow="wrap" %}

```dotenv
OVERLEAF_APP_NAME="Vores Overleaf-instans"

ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url

# Aktiverer generering af miniaturebilleder ved hjælp af ImageMagick
ENABLE_CONVERSIONS=true

# Deaktiverer kravet om e-mailbekræftelse
EMAIL_CONFIRMATION_DISABLED=true

## Nginx
# NGINX_WORKER_PROCESSES=4
# NGINX_WORKER_CONNECTIONS=768

## Angiv for TLS via nginx-proxy
# OVERLEAF_BEHIND_PROXY=true
# OVERLEAF_SECURE_COOKIE=true

OVERLEAF_SITE_URL=http://my-overleaf-instance.com
OVERLEAF_NAV_TITLE=Our Overleaf Instance
# OVERLEAF_HEADER_IMAGE_URL=http://somewhere.com/mylogo.png
OVERLEAF_ADMIN_EMAIL=support@example.com

OVERLEAF_LEFT_FOOTER=[{"text": "Kontakt dit supportteam", "url": "mailto:support@example.com"}]
OVERLEAF_RIGHT_FOOTER=[{"text":"Hej, jeg er til højre", "url":"https://github.com/yu-i-i/overleaf-cep"}]

OVERLEAF_EMAIL_FROM_ADDRESS=team@example.com
OVERLEAF_EMAIL_SMTP_HOST=smtp.example.com
OVERLEAF_EMAIL_SMTP_PORT=587
OVERLEAF_EMAIL_SMTP_SECURE=false
# OVERLEAF_EMAIL_SMTP_USER=
# OVERLEAF_EMAIL_SMTP_PASS=
# OVERLEAF_EMAIL_SMTP_NAME=
OVERLEAF_EMAIL_SMTP_LOGGER=false
OVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH=true
OVERLEAF_EMAIL_SMTP_IGNORE_TLS=false
OVERLEAF_CUSTOM_EMAIL_FOOTER=Dette system drives af afdeling x

OVERLEAF_PROXY_LEARN=true
NAV_HIDE_POWERED_BY=true

#################
## OIDC til CE ##
#################

EXTERNAL_AUTH=oidc

OVERLEAF_OIDC_PROVIDER_ID=oidc
OVERLEAF_OIDC_ISSUER=https://keycloak.provider.com/realms/example
OVERLEAF_OIDC_AUTHORIZATION_URL=https://keycloak.provider.com/realms/example/protocol/openid-connect/auth
OVERLEAF_OIDC_TOKEN_URL=https://keycloak.provider.com/realms/example/protocol/openid-connect/token
OVERLEAF_OIDC_USER_INFO_URL=https://keycloak.provider.com/realms/example/protocol/openid-connect/userinfo
OVERLEAF_OIDC_LOGOUT_URL=https://keycloak.provider.com/realms/example/protocol/openid-connect/logout
OVERLEAF_OIDC_CLIENT_ID=Overleaf-OIDC
OVERLEAF_OIDC_CLIENT_SECRET=DoNotUseThisATGgaAcTgCcATgGATTACAagGtTCaGcGTAG
OVERLEAF_OIDC_IDENTITY_SERVICE_NAME='Log ind med Keycloak OIDC-udbyder'
OVERLEAF_OIDC_PROVIDER_NAME=OIDC Keycloak-udbyder
OVERLEAF_OIDC_PROVIDER_INFO_LINK=https://openid.net
OVERLEAF_OIDC_IS_ADMIN_FIELD=email
OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE=overleaf.admin@example.com
OVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN=false
```

{% endcode %}

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/on-premises/da/konfiguration/overleaf-toolkit/authentication/oidc-authentication.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
