Background
Synapse allows the option of user anonymity. Email addresses are hidden. Completing ones user profile (name, title, organization, bio) is completely optional. However to allow to access certain sensitive data we must have more complete information about the user requesting access. It will be the job of the Synapse Access and Compilance Team to "verify" a user, based on reviewing information beyond that needed to create an account in Synapse. The approach is:
- User's home page (profile) will indicate that user is not verified, and have a link to a wiki that describes why users may want to become verified, and instructions on how to become verified (including for them to email ACT with relevant documents, SynapseAccessandComplianceTeam@synapse.org).
- User profile will have additional fields (ORCID, anything else?) OR (TODO) there will be a separate page for ACT to see containing verification information like email address and ORCID.
- Other information will be included in the email.
- After reviewing information, ACT clicks "Verify Identity" on applicant's home page or (TODO) on special approval page.
- Synapse stores a snapshot of the user profile (OR (TODO) the VerificationRecord) at the time of verification.
- User's home page will show if the user has been verified.
Notes
In the proposed approach there's no batching of verification. there's no dashboard to show who is / isn't verified. The information in Synapse is on the user's page. The work list is the ACT email inbox.
Workflow details
- User visits Synapse page for sensitive data.
- User sees that data is Controlled.
- User opens dialog, showing text for the access restriction, e.g. "Please become 'verified' (following instructions on your home page), and send a description of how you intend to use this data along with the Synapse ID of this data to SynapseAccessandComplianceTeam@synapse.org".
- User visits home page.
- User clicks link "Become Verified". Portal sends you to the Synapse Terms of Use to re-verify oath. After verification, Portal sends user to wiki that contains instructions... "Complete your user profile including name, organization and ORCID, then email SynapseAccessandComplianceTeam@synapse.org, including a completed ID verification document." TODO adding ORCID may be separate from editing profile.
- User completes user profile and emails ACT, including ID verification document and data use statement.
- ACT receives email. From the user's Synapse user name (the prefix of the 'from' email address) ACT member determines the ACT management page https://www.synapse.org/#!ACTVerify:<username>.
- ACT reviews ID verification document and user profile. TODO: Should the page be the user profile or a special page constructed for the ACT having specific info?
- ACT member clicks 'Verify Identity' on user's home page.
- Synapse captures snapshot of user profile (VerificationRecord, below), records that user is verified, sends notification to user.
- "Verified" now appears on user's page. "Verify Identity" changes to "Remove ID Verification."
- User receives verification notification.
- ACT visits page for sensitive data, clicks "Grant access", finds the user based on their user name, and clicks "OK".
- User is notified that they are now granted access.
Portal changes
On user profile page:
- Alert for unverified users with link to new help page (wiki).
- UI to show user is verified.
- New ACT place(page) to show VerificationRecord and Verify/"Remove Verification" button
- Changes to support new profile field(s).
- Need to verify that a wiki can be created where links are popped up in a new browser window (so that the instructional wiki is a launching point). Need to support a way to link to current user profile page (special token, like "myself" that pushes the correct url into the browser history).
Entity page:
- Ability for ACT to "grant access". This command needs to prompt for a user id, and then find an ACT terms of use for the currently shown entity. If successful, then it should create an access approval using this pair.
Services
Description | Intended User | URI | Method | Request Parameters | Request Body | Response Body | Authority |
---|---|---|---|---|---|---|---|
Verify a user. TODO: If called a second time should we update the VerificationRecord? | ACT member | /user/{id}/verification | PUT | TODO: VerificationRecordHash? | -- | VerificationRecord | |
Retrieve verification | ACT member | /user/{id}/verification | GET | -- | VerificationRecord | ||
Remove verification | ACT member | /user/{id}/verification | DELETE | -- | -- | ||
Get UserBundle (incl. ORCID) | Public | /user/{id}/userBundle | GET | ||||
UserBundle:
- isCertified
- isVerified
- hasSignedTOU
- isACTMember
- isAdmin
- userProfile
- ORCID
VerificationRecord:
- isCertified
- isVerified
- hasSignedTOU
- first name
- last name
- organization
- email addresses
- ORCID
Open questions
does verification expire?
what sort of review is required later? E.g. will ACT need later to review the information used to decide to verify someone and, if so, where will that information be stored?