Cas d’usage
Onboarding OAuth2 SuperPDP (Authorization Code + KYB)
Flow PKCE pour KYB sub-tenant via popup SuperPDP
Pour onboarder un nouveau sub-tenant (client final d'une SSII), Scell.io délègue le KYB et la vérification d'identité à SuperPDP via OAuth 2.0 Authorization Code (avec PKCE). Le widget JavaScript Scell.io (`onboarding.js` sur cdn.scell.io) ouvre un popup vers SuperPDP, le client final y saisit ses informations légales (SIRET, KBIS), passe la vérification d'identité, et SuperPDP redirige vers le callback Scell.io avec un `code`. Côté backend, `POST /onboarding/superpdp/callback` échange le code contre des tokens OAuth (access + refresh) qui sont stockés chiffrés au niveau du sub-tenant. Le tenant Scell.io est créé automatiquement avec les informations vérifiées par SuperPDP.
À retenir
- OAuth 2.0 Authorization Code + PKCE
- Widget JS sur `cdn.scell.io/widget/v1/onboarding.js`
- KYB + identity check délégués à SuperPDP
- Endpoints : `POST /onboarding/superpdp/authorize` + `/callback`
- Tokens OAuth stockés chiffrés AES-256-GCM par sub-tenant
- Refresh token rotation à chaque utilisation
Exemple de code
// Frontend : intégration du widget dans une page React
import { useEffect } from 'react';
declare global { interface Window { ScellOnboarding?: any } }
export function OnboardingButton({ publishableKey }: { publishableKey: string }) {
useEffect(() => {
const script = document.createElement('script');
script.src = 'https://cdn.scell.io/widget/v1/onboarding.js';
script.async = true;
document.body.appendChild(script);
return () => { script.remove(); };
}, []);
return (
<button onClick={() => window.ScellOnboarding?.open({
publishableKey,
onComplete: (subTenant) => console.log('Sub-tenant onboarded:', subTenant.id),
onError: (err) => console.error(err),
})}>Démarrer l'onboarding</button>
);
}