Mijn vraag
- Website => https://example.com
- REST => https://example.api (ander domain dus)
Stel je logt in op de website, en je wilt nu gebruik maken van de API (https://example.api/books/order/by-name), hoe beveilig je dan deze API? M.a.w. hoe weet de API dat hij met dezelfde gebruiker praat als diegene die is ingelogd op https://example.com?
Ik lees verschillende oplossingen, maar ik op elke methode is een opmerking:
HTTP Basic Auth
https://user:password@example.api/.. => Niet veilig, want er wordt gebruik gemaakt van een zwakke encryptie van het wachtwoord. Tevens het idee dat een wachtwoord opneemt in de URL, lijkt me geen goed idee. Dit kan je uiteraard ook gewoon vervangen door iets anders.
Het is ook mogelijk gebruik te maken van digit, maar ook deze heeft de bovenstaande nadelen, en is ook niet zo flexibel.
Opnemen in url
https://example.api/key/..
Dit lijkt de meest handige, aangezien deze vrij makkelijk is te implementeren (+ tijdstamp, etc.).
De URL wordt wat ik begrijp encrypt. Echter zou iemand deze uit de cache kunnen halen.
De key zou je kunnen vasthouden, en zo maar één sessie toestaan, maar dit is misschien niet zo handig als je op meerdere locaties tegelijk bent ingelogd (tablet + PC bijv.).
Dit zou ook kunnen: https://example.api/authenticate (met een POST), en bij elke request dit weer valideren.
Sessie/Cookies
Dit wordt overal afgeraden. In theorie zou je dus de sessie kunnen meegeven, en vervolgens deze checken op welke gebruiker, start datum, agent, etc. is. Echter kan je ook een sessie 'makkelijk' spoofen.
Verder wordt er gesproken over de (sessie) storage-backend die tegenwoordig in elke browser zit, echter kun je deze ook uitschakelen, waardoor deze mogelijkheid weer wegvalt.
oAuth, JWT, ..
Deze lijken best ingewikkeld en zijn nog volop in ontwikkeling (wat ik heb gelezen).
JWT lijkt hierin de beste oplossing te zijn, maar wederom niet geheel duidelijk hoe je dit makkelijk kunt implementeren.
Relevante software en hardware die ik gebruik
PHP, JSON, nodejs (beginner)
Wat ik al gevonden of geprobeerd heb
Topics op Stackoverflow, blogs, etc. maar heb nog vragen.
Bedankt.
- Website => https://example.com
- REST => https://example.api (ander domain dus)
Stel je logt in op de website, en je wilt nu gebruik maken van de API (https://example.api/books/order/by-name), hoe beveilig je dan deze API? M.a.w. hoe weet de API dat hij met dezelfde gebruiker praat als diegene die is ingelogd op https://example.com?
Ik lees verschillende oplossingen, maar ik op elke methode is een opmerking:
HTTP Basic Auth
https://user:password@example.api/.. => Niet veilig, want er wordt gebruik gemaakt van een zwakke encryptie van het wachtwoord. Tevens het idee dat een wachtwoord opneemt in de URL, lijkt me geen goed idee. Dit kan je uiteraard ook gewoon vervangen door iets anders.
Het is ook mogelijk gebruik te maken van digit, maar ook deze heeft de bovenstaande nadelen, en is ook niet zo flexibel.
Opnemen in url
https://example.api/key/..
Dit lijkt de meest handige, aangezien deze vrij makkelijk is te implementeren (+ tijdstamp, etc.).
De URL wordt wat ik begrijp encrypt. Echter zou iemand deze uit de cache kunnen halen.
De key zou je kunnen vasthouden, en zo maar één sessie toestaan, maar dit is misschien niet zo handig als je op meerdere locaties tegelijk bent ingelogd (tablet + PC bijv.).
Dit zou ook kunnen: https://example.api/authenticate (met een POST), en bij elke request dit weer valideren.
Sessie/Cookies
Dit wordt overal afgeraden. In theorie zou je dus de sessie kunnen meegeven, en vervolgens deze checken op welke gebruiker, start datum, agent, etc. is. Echter kan je ook een sessie 'makkelijk' spoofen.
Verder wordt er gesproken over de (sessie) storage-backend die tegenwoordig in elke browser zit, echter kun je deze ook uitschakelen, waardoor deze mogelijkheid weer wegvalt.
oAuth, JWT, ..
Deze lijken best ingewikkeld en zijn nog volop in ontwikkeling (wat ik heb gelezen).
JWT lijkt hierin de beste oplossing te zijn, maar wederom niet geheel duidelijk hoe je dit makkelijk kunt implementeren.
Relevante software en hardware die ik gebruik
PHP, JSON, nodejs (beginner)
Wat ik al gevonden of geprobeerd heb
Topics op Stackoverflow, blogs, etc. maar heb nog vragen.
Bedankt.