Applicazione cloud multi-tenant e credenziali utente

2

Sto creando un'applicazione cloud multi-tenant e in realtà ho bisogno di un po 'di aiuto per risolvere una situazione relativa all'accesso.

La mia app è un webscheduler, questo consente a ciascun cliente di avere una determinata posizione in cui memorizzare l'appuntamento, la posizione è il database del mio cliente (acquirente).

Ogni acquirente può avere posizioni multiple, quindi creerò per ogni posizione un database (1 posizione = 1 licenza). Fino a qui nessun problema posso gestire correttamente la situazione.

Quello che sto cercando di fare è creare un pannello di login per ciascun (acquirente), notando che l'acquirente ha anche operatori, segretari e i suoi clienti. Quindi nel database delle posizioni verranno archiviate tutte le credenziali di tutti i lavoratori e i clienti di questa posizione.

Ora il primo problema richiede la connessione al database per ogni titolare, quindi immagina che il mio acquirente inserisca le sue credenziali nella mia app, un esempio pratico è meglio:

USERNAME: Foo
PASSWORD: bar

Ho bisogno di recuperare la connessione al database corretta per questo tenant. La mia idea è inserire in un file XML un token di accesso (licenza per esempio), quindi immagina questa struttura:

<licenses>
    <license>
        <token>#dfpeFHTd93GHa9x$3d+Asòd3</token>
        <connection>
            <host>localhost</host>
            <username>foo</host>
            <password>foo</password>
            <dbname>appname_buyerid_locationid</dbname>
        </connection>
    </license>
    <license>
        <token>3dòsA+d3$x9aHG39dTHFepfd#</token>
        <connection>
            <host>localhost</host>
            <username>foo</host>
            <password>foo</password>
            <dbname>appname_buyerid_locationid</dbname>
        </connection>
    </license>
</licenses>

quindi come puoi vedere Ho un elenco di licenze, quando l'utente inserisce le sue credenziali nel mio sistema, la mia app deve recuperare la connessione db associata a questo utente, quindi iniziare a scorrere tutte le licenze nel mio file XML e ottieni la connessione associata al token.

Ora il problema principale in questa logica è token , perché non ho idea di come assegnare questo token al mio acquirente e ai suoi dipendenti e clienti.

Quindi essenzialmente come una richiesta rest-api , la traccia (in questo caso l'accesso) dovrebbe essere associata a un token con le credenziali dell'utente, il token è una licenza o qualcosa del genere che ha riconosciuto la posizione.

Devo assegnare questo token da qualche parte nell'endpoint per riconoscere il mio acquirente, ma non ho idea di dove, quindi ho bisogno di un aiuto qui, forse qualcuno vedrà qualcosa che non riesco a vedere; o forse ho un'altra logica potente e migliore della mia.

Per domande o dettagli, non esitare a chiedere.

Grazie.

    
posta AgainMe 19.01.2017 - 11:50
fonte

1 risposta

1

Se ti affidi esclusivamente al nome utente per trovare il cliente corretto, i nomi utente devono essere unici per tutti i clienti, il che potrebbe essere problematico.

Suggerirei che il modulo di accesso abbia un elenco a discesa dei clienti, oltre al nome utente e alla password. (Potresti quindi avere un secondo elenco di località selezionate per quel cliente, se necessario).

È possibile memorizzare un cookie persistente che identifica il cliente e utilizzarlo per preselezionare il cliente alla successiva visita.

Un'alternativa sarebbe quella di fornire a ogni cliente un URL personalizzato: link .

    
risposta data 19.01.2017 - 17:17
fonte

Leggi altre domande sui tag