Edited for emphasis: This is a client-side console app, not a web app.
I have a C# console app which downloads files from Azure blob storage. The app will run unattended as a scheduled task so can't prompt a user to log in. I figured out how to use Azure Key Vault to store the connection string and I created a service principle for the app in Azure Active Directory. The app authenticates with AAD using a client id and client secret, and then gets the connection string from Key Vault. But this still leaves me needing to store the client id and client secret somewhere. Have I really gained anything, or have I just moved the problem, from 'how to protect the connection string?' to 'how to protect the client secret?'