it-swarm.dev

Qual è il modo corretto di autenticare un utente?

Un paio di anni fa ho scritto un componente piccolo e molto incompleto che autenticava gli utenti provenienti da fuori Joomla! vale a dire un'applicazione mobile.

Esiste un modo corretto o preferito di gestirlo?

7
Nestor Ledon

Sulla base del tuo commento, stai cercando un OAuth setup. Per quanto ne so, Joomla ha Oauth classi integrate nel core, ma queste classi devono consentire a Joomla di agire come client (nel tuo caso la tua app mobile è un client). Non ti danno la possibilità di funzionare come server.

Di recente ho usato questo pacchetto per configurare un server OAuth2 su Joomla Framework: https://github.com/bshaffer/oauth2-server-php . Ha funzionato molto bene. Ci vorranno sicuramente alcuni giorni prima che tutto sia pronto e funzionante, ma puoi farlo in Joomla.

Esistono un paio di metodi diversi per autenticare un utente in OAuth2. L'approccio comune è di fare in modo che il client reindirizzi l'utente al tuo sito per inserire le informazioni di accesso. Quindi reindirizzi l'utente al client con un codice che il client trasforma in un token di accesso.

Dal momento che sembra che controlli anche l'applicazione mobile, questo non è necessario. Ti fidi del client (spero), quindi puoi solo avere l'utente che accede all'applicazione.

Dovresti quindi utilizzare l'opzione "Proprietario delle risorse/Credenziali password" delineato qui: http://bshaffer.github.io/oauth2-server-php-docs/overview/grant-types/ . Questo ha l'app per dispositivi mobili che spedisce semplicemente l'utente/la password immessi sul tuo sito Joomla, quindi il sito Joomla restituisce un token per la convalida. Il token può essere salvato e utilizzato la volta successiva invece di riaccedere.

Questo ti dà il controllo sul sito Joomla per invalidare i token e costringere gli utenti mobili ad accedere nuovamente.

5
David Fritsch

Puoi usare il seguente codice:

JFactory::getApplication()->login($credentials);

dove:

$credentials = Array('username' => string, 'password' => string);
4
csbenjamin

Vuoi usare qualcosa come OAuth/OAuth2. La mia idea qui non è vera OAuth ma basata sulla mia conoscenza di Joomla nel modo più semplice.

Convalida l'utente tramite la chiamata API al componente in Joomla per creare un token collegato al proprio IP, quindi reindirizzalo con una richiesta GET che convalida quel token e crea la sessione per loro. Il token è facile da proteggere poiché si basa sull'IP per autenticare l'utente già autenticato, il modo migliore è assicurarsi che possa essere utilizzato solo una volta. Per la chiamata API dovrebbe essere una crittografia SSL POST richiesta per i migliori risultati.

Quindi inviare una POST richiesta al componente contenente l'IP, il nome utente e la password dell'utente. Se tutto è valido, si rinvia un token. Quindi si reindirizza l'utente al componente contenente quel token a impostare la sessione. Non so come utilizzare l'API Joomla per accedere a una persona, ma sono sicuro che ci sia qualcosa per questo.

Modifica: sembra che la risposta csbenjamin sia andata nell'API per l'accesso.

3
Jordan Ramstad