---
title: "Configureer JWT voor de knowledge base-widget"
slug: "configuring-jwt-for-the-knowledge-base-widget"
updated: 2026-10-12T08:21:29Z
published: 2026-10-12T08:21:29Z
canonical: "docs.document360.com/configuring-jwt-for-the-knowledge-base-widget"
---
> ## Documentation Index
> Fetch the complete documentation index at: https://docs.document360.com/llms.txt
> Use this file to discover all available pages before exploring further.
# Configureer JWT voor de knowledge base-widget
Als je kennisbank privé is of beperkt tot specifieke gebruikers, kun je JWT (JSON Web Tokens) gebruiken om de toegang tot de ingebedde Document360-widget veilig te controleren. Deze opzet zorgt ervoor dat alleen geauthenticeerde gebruikers artikelen via de widget kunnen bekijken, zonder dat ze apart hoeven in te loggen.
Met JWT-authenticatie verzorgt je systeem het inloggen en tokengenereren. De widget gebruikt dat token vervolgens om content op te halen op basis van het toegangsniveau van elke gebruiker.
---
## Hoe JWT-authenticatie werkt voor de widget
JWT is de aanbevolen aanpak wanneer de zichtbaarheid van je kennisbank is ingesteld op **Privé** of **Gemengd**. In deze gevallen moeten lezers geauthenticeerd zijn voordat de widget inhoud kan tonen. JWT regelt dit stil. Lezers zien nooit een apart inlogscherm.
Gebruik JWT voor de widget wanneer:
- Je kennisbank is beperkt tot specifieke gebruikers of lezersgroepen.
- Je wilt single sign-on toegang tot de widget zonder een aparte inlogprompt.
- Je moet bepalen welke inhoud elke lezer ziet op basis van hun groepslidmaatschap.
### Overzicht van authenticatieflow

Het bovenstaande stroomdiagram toont wat er gebeurt wanneer een gebruiker een widget op je website laadt. De Document360-widget communiceert met je systeem om een beveiligd token te verkrijgen voordat de inhoud wordt weergegeven.

Het bovenstaande sequentiediagram geeft de technische flow weer tussen de browser van de gebruiker, je backend en de identiteitsserver van Document360 om het JWT-token te genereren en te valideren.
De onderstaande stappen leggen de volledige JWT-authenticatieflow uit:
1. De gebruiker bezoekt je website, waar de Document360-widget is ingebed.
2. De widget stuurt een stille aanvraag naar je authenticatie-endpoint (token-endpoint) dat in de widget-instellingen is geconfigureerd.
3. Je backend stuurt een verzoek naar Document360 met de vereiste gegevens (client ID, client secret) en lezersgegevens.
4. Document360 valideert het verzoek en stuurt een ondertekende JWT terug naar je backend.
5. Je backend stuurt de token terug naar de widget.
6. De widget gebruikt dit token om artikelen op te halen en weer te geven waar de lezer toegang toe heeft.
7. Wanneer het token verloopt, vraagt de widget automatisch een nieuwe aan (indien geconfigureerd).
OPMERKING
De bovenstaande flow vindt achter de schermen plaats. Lezers zien nooit een inlogscherm voor de widget.
---
## Voordat je begint
- Je moet een **rol als projecteigenaar** of **beheerder** hebben in Document360.
- Er moet al minstens één kennisbankwidget bestaan. Zo niet, maak er dan eerst een aan vanuit **Connections** () > **kennisbankwidget**. Lees meer op [Widget toevoegen](https://docs.document360.com/docs/nl/adding-a-widget).
- De zichtbaarheid van je kennisbasisprojecten moet op **Privé** of **Gemengd** staan. JWT is niet vereist voor openbare projecten.
- Je moet toegang hebben tot je backendserver om het authenticatie-endpoint te implementeren. Het codevoorbeeld in dit artikel gebruikt C#, maar dezelfde principes gelden voor elke server-side taal.
- Er moet minstens één lezersgroep in je project zijn geconfigureerd. De widget vereist minstens één geldige lezergroep-ID om content weer te geven. Lees meer over [JWT-lezersgroepen](https://docs.document360.com/docs/nl/jwt-reader-groups).
---
## Stap 1: Schakel JWT in en configureer JWT voor de widget
1. Navigeer naar **Connections** () > **Knowledge base-widget** in de linker navigatiebalk.
De lijst met widgets verschijnt.
2. Beweeg je muis over de widget die je wilt configureren en klik op het pictogram **Bewerken** ().
3. Navigeer in het tabblad **Geavanceerde instellingen** naar de **JWT-accordeon** en zet de schakelaar **Enable** aan.

De volgende velden worden weergegeven:
| Veld | Beschrijving |
| --- | --- |
| **Klant-ID** | De ID van je project, automatisch gegenereerd door Document360. |
| **Widget-ID** | Een unieke identificatie voor deze specifieke widget. Gebruikt om meerdere widgets in hetzelfde project te onderscheiden. |
| **Token-eindpunt** | Een HTTP-endpoint waarmee je een toegangstoken kunt verkrijgen met een autorisatiecode. |
| **Cliëntgeheim** | Klik op **Regenereren** om het clientgeheim te genereren. Sla deze waarde veilig op zoals deze van toepassing is op alle JWT-geschikte widgets in het project. |
| **URL autoriseren** | Plak de geautoriseerde URL van de widget-webpagina van je kennisbank. |
BELANGRIJK
Het clientgeheim wordt gedeeld door alle JWT-geschikte widgets en chatbots in het project. Als je het geheim opnieuw genereert, moet je het nieuwe geheim bijwerken in alle door JWT geconfigureerde widgets en applicaties om authenticatiefouten te voorkomen. Het clientgeheim wordt alleen tijdens het genereren getoond en wordt niet opgeslagen in Document360, dus sla het veilig op.
1. Klik **op Opslaan** om de wijzigingen toe te passen.
Embed de geautoriseerde URL in je code en plak deze in het **scriptgedeelte** van je webpagina. Dit implementeert een veilige, geauthenticeerde widget die ongeautoriseerde toegang van derden voorkomt.
OPMERKING
Het inschakelen van JWT verwijdert het API-token uit het widgetscript. Als JWT vervolgens wordt uitgeschakeld, wordt een nieuw API-token automatisch opnieuw gegenereerd en hersteld in het widgetscript.
---
## Stap 2: Implementeer het authenticatie-endpoint
Na het configureren van JWT in het portaal, stel je een authenticatie-endpoint in je backend-applicatie. Dit endpoint ontvangt een verzoek van de widget en geeft als antwoord een geldig token terug.
OPMERKING
Dit endpoint is specifiek voor de widget-authenticatieflow. Voor het knowledge base-site JWT-authenticatie-endpoint, zie [JWT configureren in Document360](https://docs.document360.com/docs/nl/configuring-the-jwt-sso).
Het onderstaande voorbeeld laat zien hoe het eindpunt in C# geïmplementeerd wordt. Het gebruikt de `RequestTokenAsync` extensiemethode uit de IdentityModel-bibliotheek. Dezelfde logica geldt voor andere server-side talen zoals Node.js of Python.
```
using IdentityModel.Client;
///
/// Endpoint to authenticate a user, generate a JWT token from Document360,
/// and return it to the widget.
///
[HttpGet]
[Route("authenticate")]
public async Task WidgetAuthentication(string id)
{
// Ensure the user is authenticated in your application
if (!HttpContext.User.Identity.IsAuthenticated)
{
return Unauthorized(new { message = "User is not authenticated." });
}
// Define configuration values
var clientData = new ClientDetails
{
ClientId = "{Client ID}", // Replace with your project's client ID
Secret = "{Client secret}", // Replace with your generated client secret
TokenEndpoint = "{Token endpoint}", // Replace with the token endpoint URL from Document360
WidgetId = "{Widget ID}", // Replace with your widget ID
SecurityGroupIds = "group1,group2", // Replace with comma-separated reader group IDs
TokenValidity = 900 // Token validity in seconds (300 to 86400)
};
// Convert the comma-separated reader group IDs into a list
List readerGroupIds = null;
if (!string.IsNullOrEmpty(clientData.SecurityGroupIds))
{
readerGroupIds = clientData.SecurityGroupIds
.Split(',')
.Select(c => c.Trim())
.ToList();
}
// Prepare the payload with user and configuration details
var payload = new
{
username = "{Username}",
firstName = "{First name}",
lastName = "{Last name}",
emailId = "{Email address}",
readerGroupIds = readerGroupIds,
tokenValidity = clientData.TokenValidity,
widgetId = clientData.WidgetId,
projectId = clientData.ClientId
};
var payloadString = JsonConvert.SerializeObject(payload);
try
{
// Create an HttpClient instance. In production, reuse a single instance
// (for example, through IHttpClientFactory) instead of creating one per request.
using var client = new HttpClient();
// Send request to Document360 token endpoint
var result = await client.RequestTokenAsync(new TokenRequest
{
Address = clientData.TokenEndpoint,
ClientId = clientData.ClientId,
ClientSecret = clientData.Secret,
GrantType = "Widget",
Parameters =
{
{ "payload", payloadString },
{ "id", clientData.ClientId }
}
});
// Return the access token to the widget
return Ok(new
{
accessToken = result.AccessToken,
expiresIn = result.ExpiresIn
});
}
catch (Exception ex)
{
return StatusCode(500, new
{
message = "Failed to generate token.",
details = ex.Message
});
}
}
```
**Tokengeldigheidsregels:**
- De `tokenValidity` waarde wordt ingesteld in seconden. Het minimum is **300 seconden (5 minuten)** en het maximum **86.400 seconden (1440 minuten).**
- Als je een waarde buiten dit bereik invoert, past het systeem deze automatisch aan naar de dichtstbijzijnde geldige waarde. Bijvoorbeeld, als je `tokenValidity` deze op 60 seconden zet, wordt deze automatisch verhoogd naar 300 seconden.
- Een waarde van 900 seconden (15 minuten) is een redelijke standaard voor de meeste gebruiksgevallen. Kortere waarden verbeteren de beveiliging, maar verhogen de backendbelasting.
OPMERKING
De widget vereist ten minste één geldige lezergroep-ID om inhoud weer te geven. Geef de ID's door als een array in het `readerGroupIds` veld van de JWT-payload. In het C#-voorbeeld hierboven worden de IDs opgeslagen als een komma-gescheiden string `SecurityGroupIds` in en omgezet in een lijst voordat de payload wordt verzonden. Leer hoe je [lezergroep-ID's](https://docs.document360.com/docs/nl/jwt-reader-groups) kunt verkrijgen.
---
## Stap 3: Test je JWT-widgetconfiguratie met Postman
Nadat je JWT in het portaal hebt ingesteld en je backend-authenticatie-endpoint hebt geïmplementeerd, gebruik je Postman om te bevestigen dat je configuratie werkt zoals verwacht. Deze test verifieert dat het backend-endpoint van je widget een geldige JWT-token teruggeeft.
OPMERKING
Deze test is specifiek voor de widget-authenticatieflow. Deze verifieert dat je backend een geldig token teruggeeft aan de widget. Om in plaats daarvan de knowledge base-site JWT SSO-flow te testen, zie [Test je JWT-configuratie](https://docs.document360.com/docs/nl/test-your-jwt-configuration).
1. **Lanceerpostbode**.
2. Selecteer **+ Nieuw tabblad** of klik op **Nieuw** > **HTTP-verzoek**.
3. Zet de methode op **POST.**
4. Voer in het aanvraag-URL-veld de volledige URL van je backend-endpoint in.
Voorbeeld: `https://yourdomain.com/authenticate`
5. Ga naar het tabblad **Autorisatie** .
6. Selecteer onder **Type** Basic **Auth**.
7. Voer de volgende kwalificaties in:
- **Gebruikersnaam**: Je Client ID van het Document360-portaal.
- **Wachtwoord**: Je Client Secret werd gegenereerd toen je de JWT aanmaakte.
8. Ga naar het tabblad **Lichaam** .
9. Selecteer **raw** en kies **JSON** uit het dropdownmenu.
10. Plak het volgende voorbeeld JSON in het lichaam:
```
{
"username": "john.doe",
"firstName": "John",
"lastName": "Doe",
"emailId": "john.doe@example.com",
"readerGroupIds": ["group1", "group2"],
"tokenValidity": 900,
"widgetId": "your-widget-id",
"projectId": "your-project-id"
}
```
Vervang de waarden door echte data uit je app en Document360-configuratie.
1. Klik **op verzenden**.
Als het verzoek succesvol is, ontvang je een antwoord als volgt:
```
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": 900
}
```
Controleer het volgende in het antwoord:
- De responsstatus is **200 OK.**
- Het responslichaam bevat een geldig `accessToken`.
- De `expiresIn` waarde komt overeen met je verwachte tokengeldigheidsduur in enkele seconden.
Als alle drie correct zijn, werkt je JWT-widgetconfiguratie zoals bedoeld.
---
## Widget-artikelen openen op de kennisbanksite
Wanneer een lezer op het **pictogram Openen in nieuw tabblad** in de widget klikt, opent het artikel op je kennisbanksite. De widget en de kennisbanksite gebruiken aparte JWT-sessies, waardoor de widgetsessie van de lezer hen niet op de site inloggen.
Als je kennisbank meerdere JWT-configuraties heeft, kan de site niet bepalen welke JWT-aanmelding de lezer moet gebruiken, en ziet de lezer de algemene inlogpagina.
Om lezers direct naar het artikel te leiden, log je ze in op de kennisbank vanuit je eigen applicatie en leid je ze door naar het artikelpad. Voor het URL-formaat, zie [Doorverwijzen naar een specifieke pagina na inloggen](https://docs.document360.com/docs/nl/implement-jwt-in-your-application#redirecting-to-a-specific-page-after-login).
---
## Volgende stappen
Nadat je JWT-configuratie is geverifieerd en werkt, kun je:
- Embed de widget op je website door het scriptfragment toe te voegen aan het scriptgedeelte van je webpagina.
- Beheer lezerstoegang door lezersgroeptoewijzingen bij te werken in **Instellingen** > **Gebruikers & permissies** > **Lezers & groepen**. Lees meer bij [lezersgroepen beheren](https://docs.document360.com/docs/nl/manage-reader-groups).
- Pas het uiterlijk en gedrag van de widget aan vanuit het **Uiterlijk-paneel** onder het tabblad **Installatie & Setup** in de widget-editor. Lees meer over [het aanpassen van de widget](https://docs.document360.com/docs/nl/customizing-the-kb-widget-using-custom-css-javascript).
---
## Best practices
- Sla het cliëntgeheim op in een beveiligde geheimenbeheerder, niet in broncode of omgevingsbestanden die voor versiebeheer zijn toegewijd.
- Stel het zo kort mogelijk in `tokenValidity` als je use case toelaat. Kortere geldigheid verkleint het blootstellingsvenster als een token wordt onderschept.
- Test altijd met Postman voordat je live gaat om problemen met de credential of payload vroeg te ontdekken.
- Als je het client secret opnieuw genereert, update dan alle widgets en chatbots die het delen voordat lezers aan hun volgende sessie beginnen. Het secret wordt gedeeld over alle JWT-geschikte widgets en chatbots in het project.
- Gebruik lezersgroep-ID's om inhoudsbeperkingen op tokenniveau af te dwingen, zodat lezers alleen zien waar ze toegang toe hebben.
---
## FAQ
**Hebben lezers een apart Document360-account nodig om de JWT-widget te gebruiken?**
Nee. Authenticatie wordt volledig via je applicatie afgehandeld. Een account in je applicatie is voldoende voor een lezer om toegang te krijgen tot de widget-inhoud.
**Wordt het client secret gedeeld door alle widgets in mijn project?**
Ja. Het clientgeheim wordt gedeeld door alle JWT-geschikte widgets en chatbots in het project. Als je het opnieuw genereert, moet je het nieuwe geheim bijwerken in elke widget en applicatie die het gebruikt om authenticatiefouten te voorkomen.
**Waarom zien lezers een inlogpagina wanneer ze een widgetartikel openen in een nieuw tabblad?**
De widget en de kennisbanksite gebruiken aparte JWT-sessies. Wanneer een lezer een artikel opent vanuit de widget in een nieuw tabblad, vereist de kennisbanksite een eigen aanmelding. Als je kennisbank meerdere JWT-configuraties heeft, ziet de lezer de algemene inlogpagina. Om lezers in te loggen en direct naar het artikel te leiden, stuur je ze via de `redirectUrl` parameter vanuit je applicatie. Zie [Doorverwijzen naar een specifieke pagina na het inloggen](https://docs.document360.com/docs/nl/implement-jwt-in-your-application#redirecting-to-a-specific-page-after-login).
**Wat gebeurt er als JWT wordt uitgeschakeld nadat het is ingeschakeld?**
Als JWT is uitgeschakeld, wordt een nieuw API-token automatisch opnieuw gegenereerd en hersteld naar het widgetscript. Lezers moeten zich in plaats daarvan via de standaardmethode authenticeren.
**Kan ik een andere taal dan C# gebruiken voor het authenticatie-endpoint?**
Ja. Het C#-voorbeeld in dit artikel is illustratief. Dezelfde logica geldt voor elke server-side taal zoals Node.js of Python. Pas de HTTP-client- en JSON-serialisatiebibliotheken aan waar nodig.