> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-pro.ayaka.space/on-premises/sv/konfiguration/overleaf-toolkit/authentication/oidc-authentication.md).

# OIDC-autentisering

Denna funktion är utvecklad av [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Här erbjuder vi några dokument för din konfiguration.

### Konfiguration

Internt använder Overleafs OIDC-modul [passport-openidconnect](https://github.com/jaredhanson/passport-openidconnect) biblioteket. Om du har problem med att konfigurera OpenID Connect, kan det vara värt att läsa README-filen för `passport-openidconnect` för att få en känsla för den konfiguration den förväntar sig.

Miljövariabeln `EXTERNAL_AUTH` krävs för att aktivera OIDC-autentiseringsmodulen. Den här miljövariabeln anger vilka externa autentiseringsmetoder som är aktiverade. Värdet på denna variabel är en lista. Om listan innehåller `oidc` så aktiveras OIDC-autentisering.

Till exempel: `EXTERNAL_AUTH=ldap oidc`

När OIDC-autentiseringsmetoden används omdirigeras en användare till Identity Provider (IdP):s autentiseringssida. Om IdP lyckas autentisera användaren kontrolleras Overleafs användardatabas efter en post som innehåller ett `thirdPartyIdentifiers` fält strukturerat enligt följande:

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

Fältet `externalUserId` måste matcha användar-ID:t i profilen som returneras av IdP-servern (se `OVERLEAF_OIDC_USER_ID_FIELD` miljövariabeln), och `providerId` måste matcha ID:t för OIDC-leverantören (se `OVERLEAF_OIDC_PROVIDER_ID`).

Om ingen matchande post hittas söker databasen efter en användare med den primära e-postadressen som matchar e-postadressen i IdP-användarprofilen:

* Om en sådan användare hittas uppdateras `thirdPartyIdentifiers` fältet.
* Om ingen matchande användare hittas och JIT-kontoskapande inte är inaktiverat skapas en ny användare med e-postadressen och `thirdPartyIdentifiers` från IdP-profilen.

I båda fallen sägs användaren vara 'länkad' till den externa OIDC-användaren. Användaren kan avlänkas från OIDC-leverantören på `/user/settings` sidan.

#### Miljövariabler

Värdena för följande fem obligatoriska variabler kan hittas med hjälp av `.well-known/openid-configuration` slutpunkten för din OpenID-leverantör (OP).

* `OVERLEAF_OIDC_ISSUER` **(krävs)**
* `OVERLEAF_OIDC_AUTHORIZATION_URL` **(krävs)**
* `OVERLEAF_OIDC_TOKEN_URL` **(krävs)**
* `OVERLEAF_OIDC_USER_INFO_URL` **(krävs)**
* `OVERLEAF_OIDC_LOGOUT_URL` **(krävs)**

Värdena för följande två obligatoriska variabler kommer att tillhandahållas av administratören för din OP

* `OVERLEAF_OIDC_CLIENT_ID` **(krävs)**
* `OVERLEAF_OIDC_CLIENT_SECRET` **(krävs)**
* `OVERLEAF_OIDC_SCOPE`
  * Standard: `openid profile email`
* `OVERLEAF_OIDC_PROVIDER_ID`
  * Godtyckligt ID för OP:n, standardvärde: `oidc`.
* `OVERLEAF_OIDC_PROVIDER_NAME`
  * Namnet på OP:n, används på `Länkade konton` avsnittet i `/user/settings` sidan, standardvärde: `OIDC-leverantör`.
* `OVERLEAF_OIDC_IDENTITY_SERVICE_NAME`
  * Visningsnamn för identitetstjänsten, används på inloggningssidan (standard: `Logga in med $OVERLEAF_OIDC_PROVIDER_NAME`).
* `OVERLEAF_OIDC_PROVIDER_DESCRIPTION`
  * Beskrivning av OP:n, används i `Länkade konton` avsnittet (standard: `Logga in med $OVERLEAF_OIDC_PROVIDER_NAME`).
* `OVERLEAF_OIDC_PROVIDER_INFO_LINK`
  * `Läs mer` URL i OP-beskrivningen, standard: ingen `Läs mer` länk i beskrivningen.
* `OVERLEAF_OIDC_PROVIDER_HIDE_NOT_LINKED`
  * Visa inte OP:n på `/user/settings` sidan, om användarens konto inte är länkat till OP:n, standard `false`.
* `OVERLEAF_OIDC_USER_ID_FIELD`
  * Värdet på detta attribut kommer att användas av Overleaf som det externa användar-ID:t, standardvärde: `id`. Andra möjliga rimliga värden är `email` och `användarnamn` (motsvarande `preferred_username` OIDC-anspråk).
* `OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS`
  * Begränsar Just-In-Time (JIT)-kontoskapande för användare som autentiserar via OIDC. Om den är satt till en kommaseparerad lista med domännamn skapas ett nytt konto endast om domänen i användarens e-postadress matchar en av de listade domänerna. Om domänen inte matchar måste en administratör manuellt skapa användarkontot med OIDC-användarens e-postadress, med antingen ett starkt slumpmässigt lösenord eller, helst, utan fältet `hashedPassword` fältet alls. Domännamn kan inkludera ett inledande `*.` jokertecken för att matcha underdomäner.
    * Exempel: För att tillåta JIT-kontoskapande för användare med e-postadress som `name@example.com` och `name@math.example.com`:\
      `OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=example.com, *.example.com`
    * Exempel: För att helt inaktivera JIT-kontoskapande:\
      `OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=`
* `OVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN`
  * Om den sätts till `true`, uppdaterar användarens `förnamn` och `efternamn` fält vid inloggning och inaktiverar formuläret för användardetaljer på `/user/settings` sidan.
* `OVERLEAF_OIDC_IS_ADMIN_FIELD` och `OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE`
  * När båda miljövariablerna är satta uppdaterar inloggningsprocessen `user.isAdmin = true` om profilen som returneras av OP:n innehåller attributet som anges av `OVERLEAF_OIDC_IS_ADMIN_FIELD` och dess värde matchar `OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE`, annars `user.isAdmin` är satt till `false`. Om `OVERLEAF_OIDC_IS_ADMIN_FIELD` är `email` så används värdet på attributet `emails[0].value` för matchningskontroll.

Omdirigerings-URL:en för din OpenID-leverantör är `https://my-overleaf-instance.com/oidc/login/callback`.

<details>

<summary>Exempel på filen variables.env</summary>

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

```dotenv
OVERLEAF_APP_NAME="Our Overleaf Instance"

ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url

# Aktiverar generering av miniatyrbilder med hjälp av ImageMagick
ENABLE_CONVERSIONS=true

# Inaktiverar kravet på e-postbekräftelse
EMAIL_CONFIRMATION_DISABLED=true

## Nginx
# NGINX_WORKER_PROCESSES=4
# NGINX_WORKER_CONNECTIONS=768

## Ställ in för 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": "Kontakta ditt supportteam", "url": "mailto:support@example.com"}]
OVERLEAF_RIGHT_FOOTER=[{"text":"Hej, jag är på höger sida", "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=Detta system drivs av avdelning x

OVERLEAF_PROXY_LEARN=true
NAV_HIDE_POWERED_BY=true

#################
## OIDC för 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='Logga in med Keycloak OIDC-leverantör'
OVERLEAF_OIDC_PROVIDER_NAME=OIDC Keycloak-leverantör
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://ayakaleaf-pro.ayaka.space/on-premises/sv/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.
