Cum se limitează utilizarea aplicațiilor pentru un SaaS cu o abordare bazată pe locație?

Lucrez la aplicația SaaS pentru întreprinderi și unii dintre utilizatorii mei ar dori să fie taxați pe o abordare pe locație.

Mă întrebam cum să mă asigur că accesul va fi într-adevăr limitat. Acum văd că persoanele care au aceeași autentificare/parolă se înregistrează de la diferite adrese IP, de la diferiți agenți utilizator în același timp, chiar dacă compania a plătit doar pentru un singur loc.

Care ar fi cel mai bun mod de a implementa limitarea din perspectiva de afaceri și tehnică? Nu vreau să fiu prea strictă, în același timp, vreau ca companiile să plătească pentru numărul de locuri de care au nevoie.

0
Este PHP, iar logindurile sunt implementate cu cookie-uri.
adăugat autor Salmon, sursa
Ce tehnologia de pe server folosiți? (Php/java/rubin/...)
adăugat autor giorgiga, sursa

2 răspunsuri

Nu filtrează după agentul de utilizator, cred că ar fi prea strictă, unii oameni pot avea o varietate de browsere instalate. Filtrarea prin IP ar putea fi, de asemenea, dificilă, unii utilizatori pot avea o IP dinamic care se schimbă la intervale regulate.

O idee ar fi să forțez utilizatorii să instaleze o extensie a browserului, extensia browserului ar putea genera un ID unic de la ceva în sistemul de operare. Poate utilizați un număr de volum HDD sau o cheie de serie Windows, orice va fi unic pentru acel computer.

Odată ce aveți acest ID unic, utilizați-l în urmărirea din spate, de fiecare dată când utilizatorul se conectează. Dacă utilizatorul depășește un anumit număr de locuri, puteți fie să blocați contul de utilizator, fie să îl contactați mai întâi.

De asemenea, ar fi o idee bună să permiteți utilizatorului o anumită cantitate de libertate, astfel încât, dacă au un loc, atunci spatele va permite, probabil, 2 locuri pentru o lună (perioadă de rulare), acest lucru ar fi în cazul în care utilizatorul cumpără un PC nou sau instalează un nou hard disk.

0
adăugat
În general, un UUID este utilizat ca identificator generat.
adăugat autor Basil Bourque, sursa

Utilizarea IP pare a fi o idee proastă - oamenii dintr-o rețea LAN (de obicei) vor avea același IP.

Presupunând că PHP nu are API pentru a accesa sesiunile de inspectare diferite decât cea actuală, o idee este:

  • dacă nu faceți deja acest lucru, pentru fiecare cookie de conectare pe care îl emiteți, emiteți, de asemenea, un id unic (un UUID va servi scopului dvs.)
  • să stocați acele ID-uri undeva (în java le puteți stoca în contextul aplicației, poate că în PHP veți avea nevoie de o tabelă db pentru asta - nu sunt expert în php), împreună cu două timestamps: "start session" "ultima activitate"
  • la fiecare solicitare, înregistrați marca curentă curentă în "ultima activitate"

Apoi, când primiți o nouă cerere, numărați câte alte persoane au activat

  • last activity >= current session start
  • last activity >= now - session TTL (only needed if can't prune expired sessions in a timely fashion)

Acest lucru ar trebui să vă dea numărul de locuri ocupate.

Rețineți că nu va observa o încălcare a numărului de locuri până când după utilizatorul excedent sa logat și va fi afișat exact până când veți vedea activitatea în altă sesiune - nu văd în orice mod în jurul acestei chestiuni, deoarece nu știți exact când un loc devine vacant (bine, ați putea spune că este vacant numai atunci când sesiunea sa a expirat, dar asta pare nedrept).

0
adăugat
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com