The Account Ecosystem Telemetry project needs to include a unique user identifier in its telemetry ping, but without being able to link that identifier back to the user's actual Firefox Account. The proposal for obtaining such an identifier is described in detail in Account Ecosystem Telemetry Identifiers and is mostly the responsibility of the Firefox Accounts service. From the perspective of an FxA client application like Firefox the key points are:
Each user has an ecosystem_user_id which is derived from their FxA master key. It's OK for client code to know this value but it needs to keep it to itself.
For recording in AET telemetry pings, the ecosystem_user_id must be encrypted to a public key that's managed by the telemetry pipeline, resulting in a value called ecosystem_anon_id. We need this value in order to send AET telemetry pings.
When the user signs in to their Firefox Account, the FxA services will use their password to unlock the master key, derive ecosytem_user_id, encrypt it to produce ecosystem_anon_id, and store that in their account profile data for us to fetch.
To support all this we need to add the following in Firefox:
Support for storing new fields ecosystem_user_id and ecosystem_anon_id as part of the persisted account state.
Support for obtaining ecosystem_anon_id from the FxA server as part of the user's profile data, and refreshing it as part of refreshing the profile data.
A public API for exposing the ecosystem_anon_id value so that AET can include it in telemetry pings.
The ability to learn the value of ecosystem_user_id is not part of this bug, but I think it's worth including the storage for it as part of this work.
The Account Ecosystem Telemetry project needs to include a unique user identifier in its telemetry ping, but without being able to link that identifier back to the user's actual Firefox Account. The proposal for obtaining such an identifier is described in detail in Account Ecosystem Telemetry Identifiers and is mostly the responsibility of the Firefox Accounts service. From the perspective of an FxA client application like Firefox the key points are:
ecosystem_user_id
which is derived from their FxA master key. It's OK for client code to know this value but it needs to keep it to itself.ecosystem_user_id
must be encrypted to a public key that's managed by the telemetry pipeline, resulting in a value calledecosystem_anon_id
. We need this value in order to send AET telemetry pings.ecosytem_user_id
, encrypt it to produceecosystem_anon_id
, and store that in their account profile data for us to fetch.To support all this we need to add the following in Firefox:
ecosystem_user_id
andecosystem_anon_id
as part of the persisted account state.ecosystem_anon_id
from the FxA server as part of the user's profile data, and refreshing it as part of refreshing the profile data.ecosystem_anon_id
value so that AET can include it in telemetry pings.The ability to learn the value of
ecosystem_user_id
is not part of this bug, but I think it's worth including the storage for it as part of this work.🐞 Issue is synchronized with Bugzilla Bug 1635656