ENG-3473: Add IDP-driven identity verification to Privacy Center#7984
Draft
ENG-3473: Add IDP-driven identity verification to Privacy Center#7984
Conversation
Add SSO/OIDC identity verification as an alternative to email OTP for Privacy Center privacy requests. Configurable per deployment via config.json with provider identifier and label. Backend: IdentityVerificationConfig and IDPProviderConfig schemas added to PrivacyCenterConfig (optional, backward compatible). Frontend: IDPLoginButtons component, IDPCallbackHandler for OAuth redirect flow, callback pages with AuthFormLayout, conditional rendering in PrivacyRequestFormPage, config validation, provider icons fetched from backend. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub. 2 Skipped Deployments
|
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
❌ Your project check has failed because the head coverage (84.94%) is below the target coverage (85.00%). You can increase the head coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## main #7984 +/- ##
==========================================
- Coverage 84.94% 84.94% -0.01%
==========================================
Files 630 630
Lines 41086 41099 +13
Branches 4769 4770 +1
==========================================
+ Hits 34901 34911 +10
- Misses 5102 5105 +3
Partials 1083 1083 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Reorder flow: user authenticates with IDP on homepage before seeing action cards. Callback stores session (email, name, token) and redirects to homepage. Form page renders existing form with identity fields hidden, custom fields pre-populated from IDP (given_name, family_name), and submits via IDP-verified endpoint. Remove TTL and single-use Redis enforcement from verification token. Token is now a pure HMAC assertion with session lifecycle managed by sessionStorage. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ticket ENG-3473
Description Of Changes
Adds IDP/SSO-based identity verification to the Privacy Center as an alternative to email OTP. Users authenticate with their organization's IDP (Google, Okta, Azure AD, or custom OIDC) before seeing the Privacy Center homepage. Once authenticated, they can submit privacy requests without further identity verification.
Flow: Authenticate via IDP on homepage -> See action cards -> Click card -> Fill custom fields (pre-populated with IDP name) -> Submit -> Success
Configurable per deployment via
config.json(optionalidentity_verificationblock). When omitted, the existing OTP flow is completely untouched.Code Changes
Backend schema (
src/fides/api/schemas/privacy_center_config.py):IDPProviderConfigandIdentityVerificationConfigPydantic schemasidentity_verificationfield toPrivacyCenterConfig(backward compatible)Frontend types and validation:
IDPProviderConfig,IdentityVerificationConfiginterfaces totypes/config.tsidentity_verificationto API-drivenPrivacyCenterConfig.tstypeidentity_verificationblock invalidation.tsFrontend feature (
features/idp-verification/):IDPLoginButtons.tsx— Provider buttons with auto-fetched icons from/plus/openid-provider/simpleIDPCallbackHandler.tsx— Exchanges OAuth code, stores email/name/token in sessionStorage, redirects to homepagePrivacy Center pages:
/idp-callbackpages (root +[propertyPath]variants)HomePage.tsx— Gates on IDP session; shows IDP login buttons when unauthenticatedPrivacyRequestFormPage.tsx— Reads stored IDP token, passes to formPrivacyRequestForm.tsx— Hides identity fields (name/email/phone) when IDP token presentusePrivacyRequestForm.ts— Skips identity validation in IDP mode, submits to/plus/privacy-request/idp-verified, pre-populatesfirst_name/last_namefrom IDP sessionAssets:
Steps to Confirm
profilescope)identity_verificationblock toconfig.json:http://localhost:3001/idp-callbackas authorized redirect URI in IDPidentity_verificationfrom config — verify OTP flow works as beforePre-Merge Checklist
CHANGELOG.mdupdated