A WebService which stores user Data and a server with a database.
A Administrator which can acces the sever wit hthe webservice and the server with the database.
Foreach user is a dedicated database.
Store the data in a way so that even not the administrator can access it with the secret of the user.
To make sure that the Administrator can't access the data stored by many users the data can be encrypted with a user secret. and / or the database can be created with a derivation of the user secret as password.
The data can then be decrypted on the client side.
This works with common user logins so I could use the user password or a hash of it as database password / Encryption. But Is there a practice what to do if the user authenticates with a external oAuth Login (Google,Facebook,Github...)? In this case i don't have any secrets / password of the user.
For me it would feel a little awkward to ask him for a "MasterKey". Are there any experiences on this scenario or real world examples?