De agent van SalureConnect is een webserver zonder front-end. Dit betekent dat beveiligingsproblemen zoals CORS, XSS, CSRF enz. niet van toepassing zijn. De belangrijkste beveiligingskwesties zijn authenticatie, encryptie en rate-limiting.
Authenticatie
Een verzoek aan de agent moet 2 headers bevatten.
- Een "salure-customer" header die de naam van de klant bevat;
- Een 'Authorization' header die een token met de juiste rechten bevat.
Dit token wordt binnen SalureConnect (de hoofdapplicatie waarmee deze agent is verbonden) door de klant zelf aangemaakt. Wanneer een token uit SalureConnect wordt verwijderd, is de agent niet meer toegankelijk met deze token. De token wordt versleuteld met de AES 256 CBC-methode. Schematisch zien alle verzoeken er als volgt uit:
- Verzoek aan een specifiek endpoint;
- Agent stuurt verstrekte authenticatie naar SalureConnect. Deze controleert of de combinatie token/klant geldig is.
- SalureConnect stuurt een status_code terug naar de agent. Als de authenticatiegegevens correct zijn, is dit een 200 status_code. Als de gegevens niet kloppen, stuurt SalureConnect een 403 terug. Deze 403 wordt direct doorgestuurd naar de client die het verzoek doet;
- De Agent voert een verzoek uit naar de servers van de client. Dit verzoek hangt af van het gebruikte eindpunt;
- De applicatie van de klant stuurt de status_code en een eventueel bericht terug naar de Agent;
- De agent stuurt dit antwoord rechtstreeks naar de client die het verzoek indient.
Encryptie
De agent van SalureConnect is een webserver zonder interne SSL-encryptie. Dit moet worden geregeld in de webserver van een cliënt, zoals NginX, IIS, enz. In deze webserver moet een permanente redirect van HTTP naar HTTPS worden gemaakt en moet ook het SSL-certificaat worden opgenomen.
Aangezien de klant een DNS-record voor deze agent registreert en de agent op de servers van de klant draait, moet het SSL-certificaat zelf door de klant worden aangevraagd en geïnstalleerd.
Rate limiting
Om te voorkomen dat de Agent wordt misbruikt voor DDOS-aanvallen op de servers van de klant of om brute force token hacks te voorkomen is een ratelimiter ingesteld in de Agent. Deze staat maximaal 5 verzoeken per seconde toe met een maximum van 120 per minuut. Deze limieten zijn ingesteld voor maximaal verwacht gebruik van de API.