openedx / xblock-lti-consumer

GNU Affero General Public License v3.0
28 stars 83 forks source link

PII Sharing in LTI 1.3 Works Inconsistently #295

Open MichaelRoytman opened 1 year ago

MichaelRoytman commented 1 year ago

PII sharing in LTI 1.3 launches works inconsistently and potentially has a few bugs.

How Do We Enable PII Sharing?

As a review, there are two key pieces of data that control when PII is shared in LTI. This summary comes from reading the code and from the Unified Flag for Enabling Sharing of PII in LTI ADR. It summarizes how these data are used in LTI 1.1.

How Does PII Sharing Work in LTI 1.3?

LTI 1.3 Resource Link Launch

LTI 1.3 Names and Role Provisioning Context Membership Service Call

Recommendations

Questions

giovannicimolin commented 1 year ago

@MichaelRoytman +1 to all recommendations.

What is the history and set of decisions underlying this PII sharing behavior? Was it intentionally implemented this way?

I think the PII implementation was never given much though, so different settings were implemented on a per need basis. Maybe we should re-look at how it works and make it consistent (both across LTI versions and use cases).

There's also de LTI-NRPS which sends over usernames and passwords when CourseAllowPIISharingInLTIFlag is enabled if I'm not mistaken.

Can PII be shared in LTI 1.3 launches? Is there any history of legal concerns?

It can, but the potential risk is that anyone creating a course can set up an LTI tool. A malicious user could use a tool to extract user information from the platform. I'm not sure if the legal discussion ever moved forward after this, and this is why the default is super restrictive.

Is there a reason that the PII sharing consent modal does not appear for inline launches? Is this intentional or unintentional? Is it a limitation of the frontend technology?

I think the modal not showing up on inline launches is a bug. There were some changes to this behavior in the past: https://github.com/openedx/xblock-lti-consumer/pull/204.

We would like to extend PII sharing to include other user identity claims that tools can reasonably expect - see list here, like name. Is this of any concern?

I think the concern here is more legal than anything else (sending PII to external tools is tricky). We can work with either a course whitelist (using the current flag to enable/disable PII) or with a tool whitelist (but it might be too much of an effort to implement, and hard to maintain).