Beste tweakers,
Voor de scouting ben ik bezig met een uitbreiding van het barsysteem wat wij gebruiken om er voor te zorgen dat men netjes betaald voor de pretcylinders. (PivoPeiler) Zie hier.
Dit is eenvoudige django applicatie met een android tablet waarop een sumup pinautomaat is verbonden via bluetooth. De webapplicatie roept via een speciale url de sumpup applicatie op, waarbij er met de pin betaald kan worden. Inmiddels is het een beetje uit de hand gelopen met diverse uitbreidinge, zoals bv de OliebollenOrganisator (one-page extern beschikbaar bestelformulier + ideal via molly voor de jaarlijkse oliebollen-actie met bonnenprinter voor het "picken" van de oliebollen zodat je bollen kan bestellen en betalen vanaf je luie bank)
Inmiddels heb ik ook een nextcloud server opgetuigd en het hele spul draait op een apache en mariadb stack server in 't gebouw.
Ik wil graag dat je extern (buiten het lan/wifi van de scouting) ook in kan loggen, maar dan alleen om bv je credits in te zien of via ideal je credits op te waarderen. Dat ga ik doen via oauth2 met nextcloud (werkt al) om te voorkomen dat ik het wiel opnieuw moet uitvinden of dat mensen twee verschillende accounts gaan krijgen.
Ik zit een beetje te bedenken hoe ik het beste django kan laten weten of een request van lan of wan komt. Kan dat uberhaupt?
Voorheen liet ik (nginx toen nog, nu apache) de webserver simpelweg alleen request naar het local-ip toestaan binnen het netwerk. Buiten het lan (verkeer voor de domein naam) kreeg je een https basic auth voor geschoteld. De router had een custom dns entry om het lokale verkeer direct naar de server te sturen, zodat je de auth niet voorgeschoteld kreeg binnen het netwerk, ook al ging je naar het domein.
Nu moet ik alle request doorsturen naar de applicatie, maar wel zorgen dat de applicatie tamper-proof onderscheid kan maken tussen local request en request vanaf wan (want django moet dan een oauth2 uitzetten naar nextcloud). Ik wil daar een middleware voor gaan schrijven die op basis van remote addr bepaald of er een oauth moet plaatsvinden.
Kan dat veilig via de https headers die meegestuurd worden? Bv filteren op remote addres? Django levert bij elk request de http headers mee via HttpRequest.META maar ik begrijp dat die gespooft kunnen worden door de client. Geld dat ook voor remote addr? Of is het beter om op een andere manier onderscheid te maken tussen verkeer van lan en wan orgin?
Voor de scouting ben ik bezig met een uitbreiding van het barsysteem wat wij gebruiken om er voor te zorgen dat men netjes betaald voor de pretcylinders. (PivoPeiler) Zie hier.
Dit is eenvoudige django applicatie met een android tablet waarop een sumup pinautomaat is verbonden via bluetooth. De webapplicatie roept via een speciale url de sumpup applicatie op, waarbij er met de pin betaald kan worden. Inmiddels is het een beetje uit de hand gelopen met diverse uitbreidinge, zoals bv de OliebollenOrganisator (one-page extern beschikbaar bestelformulier + ideal via molly voor de jaarlijkse oliebollen-actie met bonnenprinter voor het "picken" van de oliebollen zodat je bollen kan bestellen en betalen vanaf je luie bank)
Inmiddels heb ik ook een nextcloud server opgetuigd en het hele spul draait op een apache en mariadb stack server in 't gebouw.
Ik wil graag dat je extern (buiten het lan/wifi van de scouting) ook in kan loggen, maar dan alleen om bv je credits in te zien of via ideal je credits op te waarderen. Dat ga ik doen via oauth2 met nextcloud (werkt al) om te voorkomen dat ik het wiel opnieuw moet uitvinden of dat mensen twee verschillende accounts gaan krijgen.
Ik zit een beetje te bedenken hoe ik het beste django kan laten weten of een request van lan of wan komt. Kan dat uberhaupt?
Voorheen liet ik (nginx toen nog, nu apache) de webserver simpelweg alleen request naar het local-ip toestaan binnen het netwerk. Buiten het lan (verkeer voor de domein naam) kreeg je een https basic auth voor geschoteld. De router had een custom dns entry om het lokale verkeer direct naar de server te sturen, zodat je de auth niet voorgeschoteld kreeg binnen het netwerk, ook al ging je naar het domein.
Nu moet ik alle request doorsturen naar de applicatie, maar wel zorgen dat de applicatie tamper-proof onderscheid kan maken tussen local request en request vanaf wan (want django moet dan een oauth2 uitzetten naar nextcloud). Ik wil daar een middleware voor gaan schrijven die op basis van remote addr bepaald of er een oauth moet plaatsvinden.
Kan dat veilig via de https headers die meegestuurd worden? Bv filteren op remote addres? Django levert bij elk request de http headers mee via HttpRequest.META maar ik begrijp dat die gespooft kunnen worden door de client. Geld dat ook voor remote addr? Of is het beter om op een andere manier onderscheid te maken tussen verkeer van lan en wan orgin?
[ Voor 6% gewijzigd door Verwijderd op 08-04-2021 22:33 ]