Prima di tutto ti ringrazio per la tua pazienza e perchè mi stai dando informazioni preziose.
Sto dando per scontato che utilizzi il pattern mvc, in quanto la creazione di un sistema di login non si fa a "spaghetti code", ma deve essere pensato a dovere...
-- non uso nulla, è un sistema chiuso, va realizzato e rimarrà per sempre così, sotto ti spiego perchè.
Lato Client:
- Invio una chiamata al server con username e password
- Mi aspetto un qualche parametro per la sessione alla quale sto accedendo
Lato Server:
- Mi aspetto delle credenziali in un determinato modo
- Verifico tali credenziali sulla mia base di dati
- Effettuo le operazioni dovute
- Memorizzo in una variabile temporanea o sul db in modo persistente i dati di sessione per l'utente
- Rispondo con un'obj del tipo {"login":true,"user":1,"session_id":"23812u39128u319","exired":11125125+3600}
-- Perfetto, hai centrato l'obiettivo, voglio proprio questo, neppure un passaggio in più.
Lato Cliente:
- Data la risposta effettuo qualche operazione ed effettuo il redirect o altro verso le nuove risorse.
-- Questa non 'ho capita, comunque passo a spiegarti il mio progetto:
Server: Computer in Housing su farm (Aruba credo), SO Linux Centos
- in questo server gira un Back Office + le classi che mi necessiteranno per la comunicazione con i Client
- qui ci sono pure delle API REST per effettuare transazioni bancarie
Clients: Una svariato numero di Computer SB (Odroid XU4), credo che nell'anno raggiungeranno i 500, collocati in giro per l'Italia
- In questo PC gira "Ubuntu X64 Desktop"
- in questo pc girano nel proprio server LAMP delle pagine php per un interfaccia grafica dove l'utente fa delle operazioni.
- Tutte le classi che compiono "Inserimenti/Modifiche/Eliminazioni/Transazioni/Etc.." risiedono nel server remoto per ovvi motivi, quando l'utente compie una qualsiasi operazione nell'interfaccia client, si devono effettuare chiamate "sicure e autenticate" al server, in modo interagire con le dovute classi, quindi infine occorre una risposta di ritorno per l'avvenuta operazione.
Dato che nel server si effettuano pure transazioni bancarie, avevo pensato di utilizzare SOAP vedi discussione iniziale, ma poi siamo arrivati a REST con CURL.
Tu ritieni che un Client che interroga il Server su protocollo HTTPS, con la funzione curl avendo le opzioni
CURLOPT_SSL_VERIFYPEER = true
CURLOPT_SSL_VERIFYHOST = 2
CURLOPT_CAINFO = certificato.crt
CURLOPT_USERPWD = 'user : pass'
CURLOPT_HTTPAUTH = CURLAUTH_NEGOTIATE
in questa ultima opzione vedi il link:
https://curl.haxx.se/libcurl/c/CURLOPT_HTTPAUTH.html
non sia sufficente per la sicurezza?
Se fossero sufficenti, il mio problema è il seguente:
come gestisco lo script nel Server che accoglie la richiesta dal Client?
come si raccolgono le variabili che invia il Client?
Sono 18 anni che sviluppo in PHP e C# ma non ho mai affrontato una cosa come questa, mi ha spiazzato, proprio a zero non sono, mi spiego male a volte ma rimanere con le mani in mano cosi non me lo aspettavo.
Grazie ancora per la pazienza.