In het vorige artikel hebben we de basisconcepten en de werking van OAuth2 onderzocht. In dit artikel richten we ons op hoe we een OAuth2-authenticatieserver kunnen configureren met behulp van Django OAuth Toolkit(DOT).


1. Django OAuth Toolkit installeren

Om een OAuth2-server te implementeren, moeten we eerst Django OAuth Toolkit(DOT) installeren. Dit kan met een eenvoudige opdracht:

pip install django-oauth-toolkit

Na de installatie voegen we oauth2_provider toe aan INSTALLED_APPS en voeren we de migraties uit. Na de migratie kunnen we de extra menu's die DOT biedt in de Django Admin-pagina bekijken.


2. Nieuwe menu's in de Admin bekijken

Na de installatie van DOT worden de volgende 5 menu's aan de Django Admin toegevoegd:

1) Toegangstokens

  • Beheer de uitgeven toegangstokens.
  • Controleer de geldigheidsduur, de bijbehorende clienttoepassing en gebruikersinformatie van elk token.
  • Toegangstokens zijn de sleutels die door geauthentiseerde clients worden gebruikt om toegang te krijgen tot beschermde bronnen.

2) Vernieuwingstokens

  • Beheer de vernieuwingstokens.
  • Wordt gebruikt om een nieuw toegangstoken te verkrijgen wanneer het toegangstoken is verlopen.
  • Hierdoor kan de gebruiker aaneengeschakelde handelingen uitvoeren zonder opnieuw te hoeven aanmelden.

3) Toepassing

  • Registreer en beheer de OAuth2-clienttoepassingen.
  • Toepassingen moeten worden geregistreerd om te communiceren met de authenticatieserver en er zijn verschillende instellingsvelden beschikbaar.

4) Toestemming

  • Beheer de autorisatiecode.
  • De autorisatiecode is een tijdelijke sleutel die de clienttoepassing nodig heeft om een toegangstoken aan te vragen.

5) ID-tokens

  • Beheer de uitgegeven ID-tokens.
  • ID-tokens worden gebruikt wanneer OAuth2 wordt gecombineerd met OpenID Connect (OIDC) en bevatten gebruikersauthenticatie-informatie en informatie over de clienttoepassing.
  • Wordt gebruikt wanneer de client informatie over de gebruiker verkrijgt via het OpenID Connect-protocol.

3. Gedetailleerde uitleg van het Toepassingsmenu

De kern van de OAuth2-server is de registratie van de clienttoepassingen. In het Toepassing menu kunnen de volgende velden worden ingesteld:

1) Naam

De naam van de toepassing. Schrijf deze duidelijk zodat beheerders deze gemakkelijk kunnen identificeren.

2) Client ID

De unieke identificator van de toepassing. Dit wordt gebruikt door de OAuth2-server om de client te identificeren en wordt automatisch gegenereerd.

3) Client Secret

De geheime sleutel die wordt gebruikt voor clientauthenticatie. Dit geldt alleen voor servergebaseerde toepassingen (Confidential) en moet veilig worden bewaard.

4) Clienttype

Het type clienttoepassing:

  • Confidential: servergebaseerde toepassingen die de geheime sleutel veilig kunnen opslaan.
  • Public: mobiele apps of SPA (Single Page Application) die de geheime sleutel niet kunnen opslaan.

5) Autorisatiegranttype

De authenticatiemethode die de clienttoepassing zal gebruiken. Belangrijke opties:

  • Autorisatiecode: de meest voorkomende en veiligste methode.
  • Wachtwoord: gebruikers vragen om hun gebruikersnaam/wachtwoord in te voeren voor authenticatie.
  • Client Credentials: geschikt voor communicatie tussen servers.

6) Redirect URIs

De URL van de clienttoepassing waar de autorisatiecode of toegangstoken na succesvolle authenticatie naartoe wordt gestuurd.

  • Belangrijk: deze moet exact overeenkomen met de clientinstellingen.
  • Als de URL niet overeenkomt, zal de OAuth2-server geen autorisatiecode of token verzenden.
  • Om veiligheidsredenen wordt het gebruik van HTTPS aanbevolen.

7) Algoritme

Geeft het algoritme op dat wordt gebruikt voor de versleuteling van de tokens. De standaard is RS256, wat een op RSA gebaseerd ondertekeningsalgoritme is.

  • RS256: gebruikt asymmetrische encryptie en valideert handtekeningen met een openbaar sleutel.
  • Kan indien nodig worden gewijzigd naar een ander algoritme.

8) Sla Autorisatie Over

Door dit op True in te stellen, wordt automatisch autorisatie verleend aan de clienttoepassing zonder gebruikersgoedkeuring. Dit is nuttig voor interne systemen of vertrouwde toepassingen.


4. Samenvatting en volgende stappen

In dit artikel hebben we onderzocht hoe we een OAuth2-server kunnen configureren met behulp van het Admin-menu van Django OAuth Toolkit(DOT), met een focus op het Toepassing veld. Hierdoor kregen we inzicht in het registratieproces van clienttoepassingen en de rol van elk veld.

In het volgende artikel zullen we dieper ingaan op het Clienttype dat in deze post is genoemd. Met name zullen we Confidential en Public typen vergelijken en gedetailleerd uitleggen hoe deze twee types worden gebruikt in OAuth2. Verder zullen we de volgende onderwerpen behandelen:

  • De relatie tussen Clienttype en PKCE: waarom PKCE (Proof Key for Code Exchange) belangrijk is voor public clients.
  • De rol van de Client Secret: hoe de geheime sleutel wordt gebruikt in confidential clients.
  • De stroom van de Autorisatiecode-methode en PKCE: een diepe duik in de kern van de meest standaard grant type in OAuth2.

Om de stroming van de autorisatiecode duidelijk te begrijpen, is het essentieel om de interactie van PKCE en Clienttype goed te begrijpen. In het volgende artikel zullen we dit onderwerp grondig behandelen.

OAuth 2.0 Autorisatiecode Grant Stroom