Hotlinkbescherming
Voor het Scalia CDN hebben we een functie ontwikkeld waarmee je JWT-tokens kunt gebruiken om toegang tot assets op de CDN te beveiligen. Om deze functie te gebruiken, moet je deze inschakelen in het Scalia-portaal en het JWT-geheim aanleveren voor de HS256-versleuteling. Na het inschakelen moet elke CDN-URL gevolgd worden door de GET-parameter token, gevolgd door het gegenereerde JWT-token.
JWT-bescherming inschakelen
Om deze functie te gebruiken, volg je de volgende eenvoudige stappen:
- Schakel de functie in via het Scalia-portaal. Dit kan door in te loggen op je account en naar de configuratiesectie van de gewenste CDN-entry te gaan.
- In de configuratiewizard schakel je “JWT Protection” in en geef je een geheime sleutel op. Deze sleutel moet veilig worden bewaard en niet worden gedeeld met onbevoegden.
- Na het opslaan zal de CDN geen assets meer aanbieden zonder geldige authenticatie in de vorm van een token.
Een token genereren
In de meeste gevallen genereert de clientapplicatie een JWT-token en verstrekt dit aan de eindgebruiker. Scalia JWT Protection vereist een token met het volgende formaat:
| Header | Vereist | Waarde |
|---|---|---|
| alg | Ja | HS256 |
| typ | Ja | JWT |
| Claim | Vereist | Opmerking |
|---|---|---|
| iat | Ja | Unix timestamp; moment waarop het token is gegenereerd |
| nbf | Ja | Unix timestamp; moment waarop het token geldig wordt |
| exp | Ja | Unix timestamp; moment waarop het token verloopt |
| file | Nee | String; pad van het asset dat aan het token wordt gekoppeld |
| ip | Nee | String; IP-adres dat aan het token wordt gekoppeld |
We raden aan gebruik te maken van de beschikbare tools op jwt.io. Je kunt hier een voorbeeld vinden van een JWT-token met alle bovenstaande claims.
Evaluatie
Tokens worden in volgorde geëvalueerd, waarbij elke claim één voor één wordt gecontroleerd. Als een van de evaluaties ongeldig blijkt te zijn, wordt de toegang tot het asset geweigerd. Hieronder volgt een meer gedetailleerde uitleg van het evaluatieproces van het token:
- Signature Verification: De eerste stap is het verifiëren van de signature van het token met behulp van de geheime sleutel. Dit zorgt ervoor dat het token niet is gewijzigd en afkomstig is van een vertrouwde partij.
- Not Before-controle: De not-before (nbf)-claim wordt gecontroleerd om te waarborgen dat het token niet wordt gebruikt vóór de bedoelde tijd. Als de huidige tijd vóór de nbf-claim ligt, wordt toegang geweigerd.
- Expiration Check: Vervolgens wordt de expiration time (exp)-claim gecontroleerd om te verzekeren dat het token niet is verlopen. Als het token is verlopen, wordt toegang geweigerd.
- File Check: De file-claim wordt gecontroleerd om te bevestigen dat het token is uitgegeven voor het aangevraagde asset. Als het bestand niet overeenkomt met het aangevraagde pad, wordt toegang geweigerd.
- IP Check: De ip-claim wordt gecontroleerd om te verifiëren dat het token bedoeld is voor de huidige aanvrager. Als het IP-adres van de aanvrager niet overeenkomt met de ip-claim, wordt toegang geweigerd.
Implementatie
Na het genereren van het token en het ondertekenen ervan met de secret key, kan het worden gebruikt binnen de Scalia CDN. Om deze functie te gebruiken, moet je de parameter token aan de CDN-URL toevoegen, gevolgd door de gegenereerde JWT-token. Bijvoorbeeld:
https://cdn.example.com/assets/image.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....
Door deze eenvoudige stappen te volgen, kan je snel en eenvoudig de JWT-tokenauthenticatiefunctie inschakelen en genieten van veilige toegang tot de assets op je CDN. Deze functie biedt een extra beveiligingslaag om ervoor te zorgen dat alleen geautoriseerde personen toegang hebben tot de bestanden op het netwerk.
Over het geheel genomen is het gebruik van JWT-tokens een veilige en eenvoudige manier om assets op een CDN te beschermen. Met de JWT-tokenauthenticatiefunctie kan je met een gerust hart weten dat je assets veilig zijn en beschermd tegen ongeautoriseerde toegang.