In my last post I talked about the privacy issues from static public WebID in Solid. In this post I am trying to explain a way to preserve privacy, I will later submit a proposal (after figuring out how to) to change/update the original SPECs as required.
Targeted WebID for each unique client
Instead of returning the same unique WebID, the OP can return targeted WebID based on the client asking for the information. This will remain the same for every unique client and user, and can also be computed in future. This way every service accessing a Solid Pod server, will see a different unique URL for WebID, and those can not be used to co-relate the information.
We will have to update the OP (IDP) so that either it itself can calculate (or ask a different service) for the unique WebID every time.
Below I modified the official example flow to show (in step 19 and 20) how this can be achieved.
This brings in the question of how the user will learn/see all the available/used WebIDs for themselves.
That can be done by marking one client as the primary viewer/editor for the user, you can think it like a wallet. This solid application will be able to get the original unique WebID, and using that in the user's pod the wallet can find all the issued WebIDs. This goes into the implementation details of the pod server. Maybe all targeted WebIDs (& related pods) will be stored in a different namespace, maybe not.
I will write more in the next post.