Natrag   Forum.hr > Informatička tehnologija > Za napredne korisnike > Programiranje

Programiranje Za programere i one koji to žele postati ...

Odgovor
 
Tematski alati Opcije prikaza
Old 26.01.2025., 13:36   #1
Sustav naplate za masovno korišteni web servis

Ne kužim se baš u ovaj dio, pa ako netko ima iskustva da napiše poneku.

Recimo da imamo web aplikaciju/web servis kojeg bi se htjelo naplaćivati većem broj korisnika za manje novce, nešto kao pretplata (mjesečno, polugodišnje, godišnje) i da to nisu neki veliki novci, po par eura mjesečno do par desetaka eura godišnje.

Je li ima neki sustav naplate koji je jeftin i da radi automatski?

Recimo da bi većina klijenata bila fizičke anonimne osobe.
GemsBond is offline  
Odgovori s citatom
Old 26.01.2025., 15:35   #2
1. Koji ti je AAA servis?
https://en.wikipedia.org/wiki/Authen...and_accounting

Jer bez njega ne možeš znati koliko ti koji korisnik koristi resursa.

2. Definiraj anonimnog korisnika.
ruka-slave is offline  
Odgovori s citatom
Old 26.01.2025., 15:38   #3
Gle di god su plaćanja i kreditne kartice tu ti je PCI DSS i ostali ini standardi.

Bježi koliko te noge nose od toga. Vjeruj mi na riječ, sudjelovao sam u sličnim projektima.

Uzmi nekog vanjskog kome je to core bussines, npr. u HR su ti dobri CorvusPay, Stripe, bili su oni iz Rijeke zaboravio sam kako se zovu...

Dakle trenutak upisa kartice i samo plaćanje neka odrade ovi vanjski, a ti preko RESTA dobiješ status plaćeno ovo ono, a lova ti sjeda na račun preko tog payment providera.

Ti se fokusiraj da imaš dobar servis i uslugu koju nudiš, a pusti ove šta rade plaćanje da se bave sa tim.

Ajd uzdravlje.
grogo bolger is offline  
Odgovori s citatom
Old 26.01.2025., 16:02   #4
Naplata internet servisa ne podrazumijeva samo kartično plaćanje.

Može biti i direktno s (dediciranog) računa, ali i uplata određene svote gotovinom preko banke/FINE na određeni account.

Znači, imamo više stavri:
1. identifikaciju (Authentication, Authorization) korisnika
2. obračun troškova identificiranog korisnika (Accounting)
3. naplata troškova od identificiranog korisnika

Bez (1) nema (3). Kako ja vidim, GemsBond pita kako identificirati korisnika bez da zna njegov fizički/pravni identitet, dakle (1), i onda osigurati naplatu usluga (3).


Zadnje kada sam ja plaćao par sitnica preko fizičke uplatnice u banci, Hrvatskoj pošti, plus slanje novca fizičkoj ili pravnoj osobi (račun za struju npr.), morao sam upisati i pokazati osobnu iskaznicu i OIB na šalteru.

Jedan od načina za koje znam mimo ovih su prepaid bonovi za mobitel. Možeš transferirati određene manje sume na drugi broj mobitela istog operatera. Naravno sve je vezano na tel.broj mobitela i jednistveni broj fizičkog uređaja IMEI, tako da je lako identicifirati pošiljatelja i primatelja.

Naravno, tu je i plaćanje raznih virtualnih gadgeta preko on line igara.
ruka-slave is offline  
Odgovori s citatom
Old 26.01.2025., 16:11   #5
Quote:
ruka-slave kaže: Pogledaj post
1. Koji ti je AAA servis?
https://en.wikipedia.org/wiki/Authen...and_accounting

Jer bez njega ne možeš znati koliko ti koji korisnik koristi resursa.

2. Definiraj anonimnog korisnika.
Trenutno je to tek na razmišljanju, ali moglo bi jako skoro postati aktualno.

Ideja je bila nešto ovako.

Korisnik se ulogira u sustav, preko nekog od google, facebook i sličnih accounta, ideja je da većina ne mora kod mene složiti account sa svim onim potvrdama preko emaila i slično, ali vjerojatno bi i kod mene bilo neki OAuth2 npr. keycloak koji bi to omogućavao.

Postojala bi osnovna funkcionalnost bez plaćanja, ograničena.

Oni koji bi htjeli više, trebali bi platiti, razmišljao sam na način da korisnik sam može otići na stranicu na svojem profilu npr. ponudu gdje bi složio da mu random izgenerira neki kod kojeg bi priložio kod uplate.

Kad mi sjedne potvrda da je plaćeno preko tog koda, onda bi omogućio pristup dodatnim sadržajima na rok za koliko je kupljeno.

Pretpostavljam da se kod većine načina plaćanja može taj izgenerirani kod zalijepiti negdje npr. u opis plaćanja ili slično, kako bi ja dobio potvrdu da je platio baš taj određeni korisnik.

To je osnovna ideja.

Paypal nisam koristio, vidim da pošiljatelj treba platiti neku proviziju, s obzirom da ovo moje ne bi bilo jako skupo, ni provizija ne bi trebala biti nešto velika.

Sljedeća opcija je preko payment gatewaya, tu ima opcija da se koristi tuđe kao što je grogo napisao ili ići implementirati svoje i pregovarati direktno s bankom proviziju. Za nekog početnika bolje prvo, bez obzira što je provizija veća.

Pretpostavljam da ima i nekih drugih stvari sličnih paypalu.

Ima li možda nešto slično kako se plaćaju bonovi na mobitelu, kao dodatna opcija a da nije nešto jako nepovoljno.

Bi li ovo moglo funkcionirati na način kako sam to opisao?
GemsBond is offline  
Odgovori s citatom
Old 26.01.2025., 16:35   #6
pretpostavljam da treba i fiskalizirati uplate fizičkih osoba, neki račun izdati

također bi imao i poslovne subjekte kao korisnike kojima bi trebalo izdavati R1 i slično

kako bi bilo super da postoji neki plug&play sustav, da se ne mora puno oko ovoga trošiti vremena
GemsBond is offline  
Odgovori s citatom
Old 26.01.2025., 17:44   #7
Čim si organiziraš posao da ti Facebook/Google/štagod organiziraju AAA, propao si, oni te izjedaju.

AAA nije naplata. Naplata je posebni problem.
ruka-slave is offline  
Odgovori s citatom
Old 26.01.2025., 18:07   #8
Quote:
ruka-slave kaže: Pogledaj post
Čim si organiziraš posao da ti Facebook/Google/štagod organiziraju AAA, propao si, oni te izjedaju.

AAA nije naplata. Naplata je posebni problem.
to je danas standardna funkcionalnost da se na neki web site možeš ulogirati i preko google, facebook, stackoverflow, linkedin i sličnih sustava, zato jer onda ne moraš proći proceduru registracije novog klijenta na svakom web site-u

te platforme nemaju pristup na tvoj web site, nego ti samo kažu je li logiranje uspjelo ili nije, ako je uspjelo onda korisniku dozvoliš pristup
GemsBond is offline  
Odgovori s citatom
Old 26.01.2025., 18:26   #9
Quote:
GemsBond kaže: Pogledaj post
to je danas standardna funkcionalnost da se na neki web site možeš ulogirati i preko google, facebook, stackoverflow, linkedin i sličnih sustava, zato jer onda ne moraš proći proceduru registracije novog klijenta na svakom web site-u

te platforme nemaju pristup na tvoj web site, nego ti samo kažu je li logiranje uspjelo ili nije, ako je uspjelo onda korisniku dozvoliš pristup
Ne, nije tako.

Svaka od tih platformi je uvezana sa svakom drugom.

Npr. kao ilustracija, ja kao anoniman korisnik browsam forum.hr.

Moji podaci sa svime što sam browsao i pisao završe u roku par sekundi u NSA datacentru negdje u Nevadi.
ruka-slave is offline  
Odgovori s citatom
Old 26.01.2025., 19:22   #10
Quote:
ruka-slave kaže: Pogledaj post
Ne, nije tako.

Svaka od tih platformi je uvezana sa svakom drugom.

Npr. kao ilustracija, ja kao anoniman korisnik browsam forum.hr.

Moji podaci sa svime što sam browsao i pisao završe u roku par sekundi u NSA datacentru negdje u Nevadi.
ovo o čemu se piše je tzv. social login

da, postoje moguće zloupotrebe, npr. web site može pokupiti neke informacije o klijentu koje budu vraćene u ID tokenu

s druge strane i google/facebook može evidentirati korisnikova logiranja na aplikacije, pratiti ponašanje korisnika i onda prodati te podatke npr. nekoj firmi

ono što google/facebook ne mogu je da vide tvoj promet unutar tvojeg sustava
GemsBond is offline  
Odgovori s citatom
Old 26.01.2025., 20:40   #11
Quote:
GemsBond kaže: Pogledaj post
ovo o čemu se piše je tzv. social login

da, postoje moguće zloupotrebe, npr. web site može pokupiti neke informacije o klijentu koje budu vraćene u ID tokenu

s druge strane i google/facebook može evidentirati korisnikova logiranja na aplikacije, pratiti ponašanje korisnika i onda prodati te podatke npr. nekoj firmi

ono što google/facebook ne mogu je da vide tvoj promet unutar tvojeg sustava
Zapravo, mogu, i to rade.

Svaki upis svakog klijenta na svakom web serveru na bilo kojoj platformi i svjetu prolazi kroz "framework", tj. library ogromnog broja funkcija, od kojih mnoge šalju podatke svojim kreatorima.

Bukvalno sve što pišete se šalje u centralu, obrađuje i pohranjuje u vašem profilu.
ruka-slave is offline  
Odgovori s citatom
Old 26.01.2025., 20:59   #12
Quote:
ruka-slave kaže: Pogledaj post
Zapravo, mogu, i to rade.

Svaki upis svakog klijenta na svakom web serveru na bilo kojoj platformi i svjetu prolazi kroz "framework", tj. library ogromnog broja funkcija, od kojih mnoge šalju podatke svojim kreatorima.

Bukvalno sve što pišete se šalje u centralu, obrađuje i pohranjuje u vašem profilu.
open source tu pomaže zato što svatko može vidjeti je li u neki kod ubačeni neki trojanski element i često se skupi ekipa koja to stvarno i istražuje

hash koji se dobije iz tog open sourcea ti garantira da nije netko nešto petljao po kodu prije nego što si ga instaliraš

spring boot kojeg koristim je isto open source
GemsBond is offline  
Odgovori s citatom
Old 26.01.2025., 21:48   #13
Quote:
GemsBond kaže: Pogledaj post
open source tu pomaže zato što svatko može vidjeti je li u neki kod ubačeni neki trojanski element i često se skupi ekipa koja to stvarno i istražuje

hash koji se dobije iz tog open sourcea ti garantira da nije netko nešto petljao po kodu prije nego što si ga instaliraš

spring boot kojeg koristim je isto open source
Što znači Open Source?

Imaš cijeli source code program pa ga možeš analizirati?

Svih 10 milijuna linija koda koje sam ja držao u glavi, a to je bio mali fragment?

"Hash" code (MD5, SHA-1, šta god) je samo potvrda identiteta koda, ne i da u kodu nema loših namjera.
ruka-slave is offline  
Odgovori s citatom
Old 26.01.2025., 22:26   #14
Quote:
ruka-slave kaže: Pogledaj post
Što znači Open Source?

Imaš cijeli source code program pa ga možeš analizirati?

Svih 10 milijuna linija koda koje sam ja držao u glavi, a to je bio mali fragment?

"Hash" code (MD5, SHA-1, šta god) je samo potvrda identiteta koda, ne i da u kodu nema loših namjera.
da, imaš uvid u source kod, ako je nešto popularno tu postoji zajednica developera koja koristi taj softver pa neki od njih provjere a drugi njima vjeruju da je ok, ali isto tako nije u interesu izdavača softvera da ugradi trojance ili backdoorove u svoj kod jer ako ga otkriju, onda ode njegova reputacija

hash se izračuna za cijeli modul ili neki softver i onda ako promijeniš samo jedan znak npr. obrišeš space, onda ti hash više neće biti isti i to znači da je netko mijenjao i ne instaliraš tu verziju
GemsBond is offline  
Odgovori s citatom
Old 26.01.2025., 23:39   #15
Quote:
GemsBond kaže: Pogledaj post
da, imaš uvid u source kod, ako je nešto popularno tu postoji zajednica developera koja koristi taj softver pa neki od njih provjere a drugi njima vjeruju da je ok, ali isto tako nije u interesu izdavača softvera da ugradi trojance ili backdoorove u svoj kod jer ako ga otkriju, onda ode njegova reputacija

hash se izračuna za cijeli modul ili neki softver i onda ako promijeniš samo jedan znak npr. obrišeš space, onda ti hash više neće biti isti i to znači da je netko mijenjao i ne instaliraš tu verziju
J*beš hash, to je glupa funkcija koja potvrđuje da je onaj koji joj vjeruje dovoljno glup da ga možeš zajebati.

Kako znaš da ti proizvođač softvtera nije ugradio Trojanca?
ruka-slave is offline  
Odgovori s citatom
Old 27.01.2025., 10:25   #16
Quote:
ruka-slave kaže: Pogledaj post
J*beš hash, to je glupa funkcija koja potvrđuje da je onaj koji joj vjeruje dovoljno glup da ga možeš zajebati.

Kako znaš da ti proizvođač softvtera nije ugradio Trojanca?
imaš source kod kojeg se može provjeriti i otkriti trojanca ili backdoor

općenito, što više korisnika koristi neki tuđi library, logičnije je da su mogući problemi u njemu već detektirani i ispravljeni

i sad, ako imaš više korisnika u toj zajednici, zna se naći neki od njih koji se profesionalnije bave s tim da provjere taj source kod, često znaju i donacije skupljati da ih zajednica potpomogne u tom njihovom poslu i od toga imaju koristi svi koji koriste taj softver

npr.

današnji moglo bi se reći de facto standard što se sigurnosti web aplikacija tiče je OAuth2/OIDC skup protokola

oko tih protokola napravljeno je stotine rješenja u kojima su implementirani dijelovi tih standarda, neka od tih rješenja su zatvoreni souce, neka su otvoreni source

jedno od češće korištenih rješenja je softver Keycloak koji je opensource i kojeg održava zajednica, na githubu piše da ih je uključenih 1274 u održavanje

Keycloak se reklamira kao identity provider, ukratko ima mogućnost autentifikacije, autorizacije i još neke specijalne efekte, meni je zanimljiv najviše zbog authetifikacije

zajednica je velika i ja se oslanjam na to da će ta zajednica isfiltrirati moguće bugove i popraviti ih
GemsBond is offline  
Odgovori s citatom
Old 27.01.2025., 15:21   #17
A tko kontrolira KeyCloak ili kako se već zove.

Nemoj mislit da te pilam bez veze, ja sam ovo prošao stotine puta. Deset milijuna programskog koda imaš doslovce u glavi, u svako doba dana i noći. I onda se nađe jedan (brojkom:1) momak koji je krenuo nešto modificirati jer eto. Pa onda više nije, kad mu doslovce pokažeš dio koda.

Ti se oslanjaš na to da će ti velike brojke riješiti pitanje povjerenja. Možeš se jednako tako pouzdati na ptice s obližnjeg stabla, vjerojatno smreke.

Dakle, ključno je AAA.

Onog trenutka kada prvu A (authentication) predaš u ruke drugoj firmi, tvoj je posao pokojni.
ruka-slave is offline  
Odgovori s citatom
Old 27.01.2025., 15:54   #18
Quote:
ruka-slave kaže: Pogledaj post
A tko kontrolira KeyCloak ili kako se već zove.

Nemoj mislit da te pilam bez veze, ja sam ovo prošao stotine puta. Deset milijuna programskog koda imaš doslovce u glavi, u svako doba dana i noći. I onda se nađe jedan (brojkom:1) momak koji je krenuo nešto modificirati jer eto. Pa onda više nije, kad mu doslovce pokažeš dio koda.

Ti se oslanjaš na to da će ti velike brojke riješiti pitanje povjerenja. Možeš se jednako tako pouzdati na ptice s obližnjeg stabla, vjerojatno smreke.

Dakle, ključno je AAA.

Onog trenutka kada prvu A (authentication) predaš u ruke drugoj firmi, tvoj je posao pokojni.
Keycloak je samo jedan od proizvoda kojeg ja trenutno koristim, ovo je lista sličnih proizvoda https://en.wikipedia.org/wiki/List_of_OAuth_providers

Keycloak je server kojeg instaliraš i konfiguriraš kod sebe (ili negdje u cloud, ali to se isto računa kao da pripada tebi), preporuka je da se smjesti iza reverznog proxyija ili API gatewaya kako bi se onemogućio direktan pristup na taj server, na taj način se pojača sigurnost sustava.

Nakon logiranja keycloak će ti vratiti access token i refresh token koje koristiš za pristup ostalim serverima koje koristiš za biznis.
GemsBond is offline  
Odgovori s citatom
Old 27.01.2025., 16:10   #19
Quote:
GemsBond kaže: Pogledaj post
Keycloak je samo jedan od proizvoda kojeg ja trenutno koristim, ovo je lista sličnih proizvoda https://en.wikipedia.org/wiki/List_of_OAuth_providers

Keycloak je server kojeg instaliraš i konfiguriraš kod sebe (ili negdje u cloud, ali to se isto računa kao da pripada tebi), preporuka je da se smjesti iza reverznog proxyija ili API gatewaya kako bi se onemogućio direktan pristup na taj server, na taj način se pojača sigurnost sustava.

Nakon logiranja keycloak će ti vratiti access token i refresh token koje koristiš za pristup ostalim serverima koje koristiš za biznis.
Ti naravno znaš što je reverzni proxy i koje su razine anonimizacije kroz proxy server?

Ne bih htio docirati, ali ako se hoćeš baviti nečim, možda bi trebao nešto o tom poslu naučiti.

Znaš kako ide: ili ćeš naučiti prije, ili poslije. Meni osobno paše da naučiš poslije al sam maličak subjektivan.
ruka-slave is offline  
Odgovori s citatom
Old 27.01.2025., 16:47   #20
Quote:
ruka-slave kaže: Pogledaj post
Ti naravno znaš što je reverzni proxy i koje su razine anonimizacije kroz proxy server?

Ne bih htio docirati, ali ako se hoćeš baviti nečim, možda bi trebao nešto o tom poslu naučiti.

Znaš kako ide: ili ćeš naučiti prije, ili poslije. Meni osobno paše da naučiš poslije al sam maličak subjektivan.
ovu arhitekturu slažem, sve komponente, ne samo full-stack programiranje https://www.baeldung.com/spring-clou...way-bff-oauth2

ako malo skrolaš doći ćeš do slike gdje se vidi o čemu se radi

to slažem je se radi o preporukama iz jednog RFCa što se tiče sigurnosti web aplikacija od 2024., radi se o implementaciji tzv. BFF patterna koji handlea access i refresh tokene na način da ih u potpunosti uklanja iz web browsera jer tamo nisu sigurni i smješta ih na BFF server

u RFC dokumentu kojeg sam spomenuo se nalazi smjernica da se oauth2 autorizacijski server (to je ovaj keycloak kojeg spominjem) stavi iza reverznog proxija jer se na taj način diže sigurnost

reverzni proxy omogućava još jednu stvar, tzv. SAMEORIGIN koji je bitan kako bi serveri koji se nalaze na različitim domenama i protokolima mogli dijeliti cookije sa web aplikacijom koja se vrti u web browseru

sad kad lokalno razvijam, koristim nginx server kao reverzni proxy, u kubernetesu će to možda biti neki ingress kad dođe vrijeme da deployam u kubernetes

na toj slici ima još jedan pomoćni reverzni proxy, BFF je isto reverzni proxy, zapravo jača verzija toga poznata kao API gateway i preko njega se ide na resource server (onaj server koji radi nešto pametno, npr. spaja se na bazu podataka)
GemsBond is offline  
Odgovori s citatom
Odgovor



Kreni na podforum




Sva vremena su GMT +2. Trenutno vrijeme je: 09:17.