> 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/nl/configuratie/overleaf-toolkit/authentication/oidc-authentication.md).

# OIDC-authenticatie

Deze functie is ontwikkeld door [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Hier bieden we enkele documenten voor uw configuratie aan.

### Configuratie

Intern gebruikt de Overleaf OIDC-module de [passport-openidconnect](https://github.com/jaredhanson/passport-openidconnect) bibliotheek. Als u problemen ondervindt bij het configureren van OpenID Connect, is het de moeite waard om de README voor `passport-openidconnect` te lezen om een idee te krijgen van de configuratie die het verwacht.

De omgevingsvariabele `EXTERNAL_AUTH` is vereist om de OIDC-verificatiemodule in te schakelen. Deze omgevingsvariabele geeft aan welke externe verificatiemethoden zijn geactiveerd. De waarde van deze variabele is een lijst. Als de lijst bevat `oidc` dan wordt OIDC-verificatie geactiveerd.

Bijvoorbeeld: `EXTERNAL_AUTH=ldap oidc`

Bij gebruik van de OIDC-verificatiemethode wordt een gebruiker omgeleid naar de authenticatiesite van de Identity Provider (IdP). Als de IdP de gebruiker succesvol authenticeert, wordt in de Overleaf-gebruikersdatabase gecontroleerd op een record met een `thirdPartyIdentifiers` veld met de volgende structuur:

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

De `externalUserId` moet overeenkomen met de gebruikers-ID in het profiel dat door de IdP-server wordt geretourneerd (zie de `OVERLEAF_OIDC_USER_ID_FIELD` omgevingsvariabele), en `providerId` moet overeenkomen met de ID van de OIDC-provider (zie de `OVERLEAF_OIDC_PROVIDER_ID`).

Als er geen overeenkomend record wordt gevonden, wordt in de database gezocht naar een gebruiker met het primaire e-mailadres dat overeenkomt met het e-mailadres in het gebruikersprofiel van de IdP:

* Als zo'n gebruiker wordt gevonden, wordt het `thirdPartyIdentifiers` veld bijgewerkt.
* Als er geen overeenkomende gebruiker wordt gevonden en het aanmaken van JIT-accounts niet is uitgeschakeld, wordt een nieuwe gebruiker aangemaakt met het e-mailadres en `thirdPartyIdentifiers` uit het IdP-profiel.

In beide gevallen wordt gezegd dat de gebruiker 'gekoppeld' is aan de externe OIDC-gebruiker. De gebruiker kan worden ontkoppeld van de OIDC-provider op de `/user/settings` pagina.

#### Omgevingsvariabelen

De waarden van de volgende vijf vereiste variabelen kunnen worden gevonden met behulp van `.well-known/openid-configuration` eindpunt van uw OpenID Provider (OP).

* `OVERLEAF_OIDC_ISSUER` **(vereist)**
* `OVERLEAF_OIDC_AUTHORIZATION_URL` **(vereist)**
* `OVERLEAF_OIDC_TOKEN_URL` **(vereist)**
* `OVERLEAF_OIDC_USER_INFO_URL` **(vereist)**
* `OVERLEAF_OIDC_LOGOUT_URL` **(vereist)**

De waarden van de volgende twee vereiste variabelen worden verstrekt door de beheerder van uw OP

* `OVERLEAF_OIDC_CLIENT_ID` **(vereist)**
* `OVERLEAF_OIDC_CLIENT_SECRET` **(vereist)**
* `OVERLEAF_OIDC_SCOPE`
  * Standaard: `openid profile email`
* `OVERLEAF_OIDC_PROVIDER_ID`
  * Willekeurige ID van de OP, standaard: `oidc`.
* `OVERLEAF_OIDC_PROVIDER_NAME`
  * De naam van de OP, gebruikt op de `Gekoppelde accounts` sectie van de `/user/settings` pagina, standaard: `OIDC-provider`.
* `OVERLEAF_OIDC_IDENTITY_SERVICE_NAME`
  * Weergavenaam voor de identiteitsservice, gebruikt op de inlogpagina (standaard: `Log in met $OVERLEAF_OIDC_PROVIDER_NAME`).
* `OVERLEAF_OIDC_PROVIDER_DESCRIPTION`
  * Beschrijving van de OP, gebruikt in de `Gekoppelde accounts` sectie (standaard: `Log in met $OVERLEAF_OIDC_PROVIDER_NAME`).
* `OVERLEAF_OIDC_PROVIDER_INFO_LINK`
  * `Meer informatie` URL in de OP-beschrijving, standaard: geen `Meer informatie` link in de beschrijving.
* `OVERLEAF_OIDC_PROVIDER_HIDE_NOT_LINKED`
  * Toon de OP niet op de `/user/settings` pagina, als het account van de gebruiker niet is gekoppeld aan de OP, standaard `false`.
* `OVERLEAF_OIDC_USER_ID_FIELD`
  * De waarde van dit attribuut wordt door Overleaf gebruikt als de externe gebruikers-ID, standaard: `id`. Andere mogelijke, redelijke waarden zijn `email` en `gebruikersnaam` (overeenkomend met `preferred_username` OIDC-claim).
* `OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS`
  * Beperkt het aanmaken van Just-in-Time (JIT)-accounts voor gebruikers die zich via OIDC authenticeren. Als het is ingesteld op een door komma's gescheiden lijst met domeinnamen, wordt een nieuw account alleen aangemaakt als het domein van het e-mailadres van de gebruiker overeenkomt met een van de vermelde domeinen. Als het domein niet overeenkomt, moet een beheerder het gebruikersaccount handmatig aanmaken met het e-mailadres van de OIDC-gebruiker, met ofwel een sterk willekeurig wachtwoord of, bij voorkeur, zonder het `hashedPassword` veld helemaal. Domeinnamen mogen een voorloop- `*.` wildcard bevatten om subdomeinen te matchen.
    * Voorbeeld: om JIT-accountaanmaak toe te staan voor gebruikers met een e-mailadres zoals `name@example.com` en `name@math.example.com`:\
      `OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=example.com, *.example.com`
    * Voorbeeld: om het aanmaken van JIT-accounts volledig uit te schakelen:\
      `OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=`
* `OVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN`
  * Als ingesteld op `true`, werkt de gebruiker bij `first_name` en `last_name` veld bij het inloggen, en schakelt het formulier met gebruikersgegevens uit op `/user/settings` pagina.
* `OVERLEAF_OIDC_IS_ADMIN_FIELD` en `OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE`
  * Wanneer beide omgevingsvariabelen zijn ingesteld, werkt het inlogproces `user.isAdmin = true` als het door de OP geretourneerde profiel het attribuut bevat dat is opgegeven door `OVERLEAF_OIDC_IS_ADMIN_FIELD` en de waarde ervan overeenkomt met `OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE`, anders `user.isAdmin` wordt ingesteld op `false`Als `OVERLEAF_OIDC_IS_ADMIN_FIELD` is `email` dan wordt de waarde van het attribuut `emails[0].value` gebruikt voor de overeenkomstcontrole.

De omleidings-URL voor uw OpenID Provider is `https://my-overleaf-instance.com/oidc/login/callback`.

<details>

<summary>Voorbeeld van variables.env-bestand</summary>

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

```dotenv
OVERLEAF_APP_NAME="Onze Overleaf-instantie"

ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url

# Schakelt het genereren van miniaturen in met ImageMagick
ENABLE_CONVERSIONS=true

# Schakelt de vereiste voor e-mailbevestiging uit
EMAIL_CONFIRMATION_DISABLED=true

## Nginx
# NGINX_WORKER_PROCESSES=4
# NGINX_WORKER_CONNECTIONS=768

## Instellen voor TLS via nginx-proxy
# OVERLEAF_BEHIND_PROXY=true
# OVERLEAF_SECURE_COOKIE=true

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

OVERLEAF_LEFT_FOOTER=[{"text": "Neem contact op met uw supportteam", "url": "mailto:support@example.com"}]
OVERLEAF_RIGHT_FOOTER=[{"text":"Hallo, ik ben aan de rechterkant", "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=Dit systeem wordt beheerd door afdeling x

OVERLEAF_PROXY_LEARN=true
NAV_HIDE_POWERED_BY=true

#################
## OIDC voor 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='Inloggen met Keycloak OIDC Provider'
OVERLEAF_OIDC_PROVIDER_NAME=OIDC Keycloak Provider
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/nl/configuratie/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.
