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.