Il servizio SOAP legacy qui al lavoro utilizza un'autenticazione token. Il flusso è:
Come primo passaggio chiamo il metodo startSession
che passa il nome utente (ad esempio myUser
) e la password (ad esempio myPWD
) come parametro. A questo punto, username / password vengono confrontati con una tabella DB:
+------------+-----------+---------+
| username | password | token |
+------------+-----------+---------+
| myUser | myPWD | (null) |
+------------+-----------+---------+
Poiché nome utente / password corrispondono a un token generato, memorizzato nel database (nella stessa riga in cui sono memorizzati nome utente e password) e restituito all'utente che può utilizzarlo per le chiamate successive:
+------------+-----------+---------+
| username | password | token |
+------------+-----------+---------+
| myUser | myPWD | myTok |
+------------+-----------+---------+
Al momento, l'utente myUser
può chiamare qualsiasi metodo del servizio semplicemente passando un token. Sia il nome utente che il token sono controllati, se corrisponde al metodo continua, viene generato un nuovo token, memorizzato nel DB e infine restituito all'utente per una nuova chiamata.
Odio questo comportamento e sto cercando un approccio più affidabile. Vorrei: - Non memorizzare token (completamente) in un database - Non usare la libreria esterna (a meno che non sia una libreria veramente minimale) - Nuovo token per ogni chiamata di metodo
Qualche idea?