Currently, ParticipantId contains an email address. This is not a
stable long term identifier for a user, and can cause problems. For
example, let's say "Bob Smith" b...@example.com leaves the
organisation, and then someone else "Bob Jones" takes over the same
address b...@example.com. Jones could then potentially gain access to
Smith's waves.

I propose adding an additional field to ParticipantId, "opaqueId" or
"stableId" or similar. This would be an opaque string that is
guaranteed to only ever correspond to a single user. To start with, to
avoid a massive change, we can leave ParticipantId's single arg
constructor in place and have it use the email address for the opaque
id, even though this is incorrect. Servers that wish to stably
identify users could ensure that they only construct and serialize
ParticipantIds that contain a proper opaque id. A full fix might
eventually require an addition to the Federation protocol, for example
a way to ask for the current opaque id given an email address the user
just typed. I don't intend to propose a full plan to address this
issue but we might want to start thinking about it, and the initial
fix mentioned above is in my opinion a step in the right direction.

Thoughts?
Dan

Reply via email to