|Title||Unique Identifier for Users|
|Authors||Brian Wilson, Robert Raposa, Nimisha Asthagiri|
|Review Period||2019-04-15 - 2019-04-29|
We will use the LMS user_id to uniquely identify a user in the Open edX system. The LMS user_id is the
id value of the user’s row in the Django auth_user table in the Open edX LMS.
In 2016, the analytics team decided to use the the LMS user_id as a consistent user identifier for analytics events, and this Open edX Proposal (OEP) further documents and builds upon that decision.
The requirements for a User Identifier are as follows:
The following table summarizes the comparisons of a list of candidate user identifiers.
A consequence of the decision to use the LMS user_id as the unique user id is that some additional changes are needed to make the LMS user_id more globally available across all services:
This decision is also a simple acknowledgement of our tie to the database implementation and its auto-incremented value, given its already pervasive usage.
The LMS user_id is also considered a safe and anonymous option for third-party integrations as described above. One example of a third-party integration where the LMS user_id can now safely be used is in the Realtime Events API, which has been updated with this clarification.
Note: The legacy implementations of LTI and the %%USER_ID%% keyword use what is called an “anonymous id”, but is no more “anonymous” than the LMS user_id from a PII perspective. They use an id made of a combination of user id and course id, which makes it impossible for a third party system to build a user model in its own system across courses, and limits the capabilities a third-party system might offer a user. For future LTI implementations, this decision simply states that the LMS user_id is an option unless these additional limitations are a requirement of the integration.
If we were to try to eliminate the drawbacks of using an auto-incremented LMS user_id as our unique identifier, an alternative might be to introduce a new id, like a UUID (Universally Unique IDentifier).
However, the introduction of a new id has large costs: