Cambia database in base all'origine della richiesta

3

Sto sviluppando un'applicazione web che sarà gestita da più società.

Ogni azienda avrà la propria istanza di tale applicazione Web e il proprio database. Le applicazioni web e i database saranno in esecuzione sullo stesso server.

Ma ciascuna di queste istanze parlerà con una singola applicazione API Web per recuperare i dati dal loro database per quella specifica azienda.

La mia domanda è che mi chiedo se sia una buona pratica cambiare la stringa di connessione del database nell'applicazione API Web in base all'origine della richiesta? O sto trascurando qualcosa?

    
posta Johannes 23.12.2015 - 20:38
fonte

2 risposte

3

Now I am wondering whether it is a good practice to change the database connection string in the Web API application based on the request origin?

Dipende da cosa intendi per "basato sull'origine della richiesta". Se ti riferisci a qualcosa che il client controlla, come un indirizzo IP, allora quello che stai considerando è probabilmente una cattiva idea. Le cose controllate dal cliente sono facilmente falsificate e sono di fatto un invito al furto.

D'altra parte, se ti stai riferendo a qualcosa che non è facilmente falsificato, come un token di autenticazione del client, allora quello che stai considerando va bene.

Non riesco a capire quale architettura stai pianificando di utilizzare.

Opzione A

          +->Application
          |
 Web API+->
          |
          +->DB

Opzione B:

Application+->Web API+->DB

In entrambi i casi, il concetto generale con cui ti stai confrontando in questo momento è definito "autorizzazione".

L'autenticazione è un concetto correlato, ma si riferisce al cliente che dimostra di essere chi dice di essere. In genere l'autenticazione viene eseguita con password, certificati, token, ecc ....

L'autorizzazione è correlata a fornire accesso a funzionalità basate su chi il client ha autenticato come. Determinare le stringhe di connessione al database in base all'autorizzazione del client è un caso abbastanza tipico per l'autorizzazione.

Se si utilizza l'opzione A, l'API Web determinerà l'accesso al database e alle applicazioni in base ai privilegi di autorizzazione del client. E se ti capita di utilizzare l'opzione B, dovrai assicurarti che l'applicazione passi il token di autenticazione nell'API Web in modo che possa determinare il DB corretto per l'accesso.

    
risposta data 24.12.2015 - 15:27
fonte
3

È una cattiva idea affidarsi a qualsiasi cosa che il client fornisce per il controllo degli accessi, a parte un segreto condiviso difficile da falsificare.

L'origine della richiesta è facilmente falsificata.

    
risposta data 23.12.2015 - 21:22
fonte

Leggi altre domande sui tag