openedx / openedx/openedx-platform
[DEPR]: Software Secure IDV Integration
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 8.2k
- Forks
- 4.4k
- Avg merge
- 6d 18h
- Merged PRs (30d)
- 42
Description
Proposal Date
2024-07-17
Target Ticket Acceptance Date
2024-07-31
Earliest Open edX Named Release Without This Functionality
Sumac - 2024-10
Rationale
The verify_student Django app in the edx-platform implements various forms of identity verification (IDV) that are used across the platform. One implementation of IDV is an integration with Software Secure, an IDV vendor. To our knowledge, edx.org is the primary user of this integration. Until recently, we were aware of only two Open edX users of this integration - EDUlib and Open Craft - and we have since learned that they no longer use it. 2U is replacing Software Secure as its photo IDV vendor. For this reason, the Software Secure integration will be unused and has no purpose in the core. It is dead code and contributes to the unnecessary complexity of this application.
Removal
The implementation of the Software Secure integration has its tentacles in a few areas of the platform. This may not be an exhaustive list, but it should be comprehensive.
- the SoftwareSecurePhotoVerification model, the PhotoVerification model, and the SSPVerificationRetryConfig model
- references to the SoftwareSecurePhotoVerification model in the IDVerificationService
- the SoftwareSecurePhotoVerificationAdmin and the SSPVerificationRetryAdmin
- the SoftwareSecurePhotoVerification as the sender in the send_idv_update signal
- tasks
- management commands
- views
- SubmitPhotosView
- ReverifyView
- PhotoUrlsView
- DecryptFaceImageView
- DecryptPhotoIDImageView
- results_callback
- removal of the legacy IDV flow from PayAndVerifyView
- legacy IDV flow
Replacement
We do not propose replacing the Software Secure IDV integration because it is not appropriate to add integrations with specific IDV vendors into the core.
2U is in the process of proposing adding extensibility mechanisms to the verify_student application to enable the seamless integration of additional IDV vendors into Open edX installations without polluting the core. This is not a replacement per se, but it will provide the capability for Open edX operators to integrate with IDV vendors of their choosing. Please see https://github.com/openedx/platform-roadmap/issues/367 for more details.
Deprecation
We do not believe marking code for deprecation is necessary given the low usage of Software Secure IDV.
Migration
This is TBD, pending the outcome of https://github.com/openedx/platform-roadmap/issues/367. Assuming that that proposal is approved, migration will be necessary to do the following.
- We must copy all records in the SoftwareSecurePhotoVerification model to the new
VerificationAttemptmodel. - We must update the state of the
VerificationStatusmodel based on the above migration. - The indirect reference to the SoftwareSecurePhotoVerification model in the VerifiedName model must be updated.
In order to update the VerifiedName model, the following may be a reasonable approach for migration.
- We will add a new column
verification_attemptto the VerifiedName model, which will be aForeignKeyFieldtoVerificationAttempt. In the beginning, a given VerifiedName will have a value for eitherverification_attempt_id(via SoftwareSecurePhotoVerification) orverification_attempt(viaVerificationAttempt). - As part of the process of copying all records in the SoftwareSecurePhotoVerification model to the new
VerificationAttemptmodel, we will also set theverification_attemptfield to the proper reference associated with the newVerificationAttemptinstance. If a VerifiedName has values for both fields,verification_attemptwill take priority. - References to the
VerifiedName.verification_attempt_id columnwill be removed. - The SoftwareSecurePhotoVerification model will be dropped. The
VerifiedName.verification_attempt_idcolumn will be dropped.
Additional Info
- [Proposal] Add Extensibility Mechanisms to IDV to Enable Integration of New IDV Vendor Persona
- [Input Needed] IDV Usage and Requirements
Task List
TBD
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in lms/djangoapps/verify_student and review models.py, services.py, admin.py, signals.py, tasks.py, management commands, views.py, JavaScript, and templates listed in the proposal. Trace each Software Secure reference and the related VerifiedName migration discussion before defining the complete scope. Done means the obsolete integration is removed consistently, with migration requirements resolved.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- django, python
- Domain
- backend, security
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100