Toon posts:

Django/apache oauth triggeren bij toegang vanaf wan

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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 6% gewijzigd door Verwijderd op 08-04-2021 22:33 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • thlst
  • Registratie: Januari 2016
  • Niet online
van REMOTE_ADDR kun je aannemen dat ie klopt. Van HTTP_X_FORWARDED_HOST niet
Inmiddels heb ik ook een nextcloud server opgetuigd en het hele spul draait op een apache en mariadb stack server in 't gebouw.
Hoeveel mensen kunnen er bij ?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ah thanks, dan ga ik de tablet een fixed ip geven zodat ie de auth kan bypassen

bij de server? stafleden met de sleutel (geloof stuk of 10). Ding is luks full disk encrypted (wat wel een beetje poep is als ie reboot moet worden) dus over de data maak ik mij niet zo veel zorgen.