Architecture · Identité applicative

Architecture d’identité Cognito pour l’exploitation de WordPress

Considérez Cognito comme un sous-système d’identité, pas comme un simple écran de connexion : authentification dans le navigateur, fédération, groupes, contexte des jetons et identifiants AWS facultatifs restent séparés du contenu et des sessions WordPress.

Page WordPress → interface Gatey
       ↓ navigateur
Amazon Cognito User Pool
   ├→ fournisseurs sociaux / SAML / OIDC
   ├→ MFA + parcours de profil
   ├→ groupes / contexte des jetons
   └→ Identity Pool facultatif
          ↓
API protégées / accès statique

Frontière d’identité

WordPress affiche l’expérience ; Cognito détient l’identité applicative

Gatey fournit l’expérience frontend, tandis que Cognito authentifie les utilisateurs et émet des artefacts d’identité que d’autres services peuvent valider. La connexion fonctionne ainsi sur WordPress dynamique ou statique sans faire de la table des utilisateurs WordPress la source de l’identité applicative.

Navigateur du visiteur
  → authentificateur Gatey
  → Cognito User Pool
       ├→ connexion / inscription / MFA / profil
       ├→ fédération SAML / OIDC / sociale
       └→ contexte des groupes et jetons
             ├→ API autorisées par JWT
             ├→ identifiants IAM facultatifs
             └→ décision du signataire pour l’accès statique protégé

Frontière d’autorisation Une authentification réussie n’accorde pas un accès universel. Les API et ressources statiques protégées doivent appliquer leurs propres scopes, politiques IAM ou accès signé à partir du contexte d’identité fourni par Cognito.

Ce que le modèle provisionne

La pile d’identité comprend plus qu’un User Pool. Cet inventaire présente le client navigateur, les options de fédération et de domaine, les déclencheurs de cycle de vie, les identifiants AWS facultatifs et les sorties formant la frontière applicative.

ComposantRaison d’êtreChoix de conception principalNote d’exploitation
User Pool + App ClientAnnuaire principal et client OAuth pour la connexion WordPress dans le navigateurAucun secret client ; client public compatible code ou SRPLa pile peut le créer ou se rattacher à un pool existant selon le mode du modèle.
Domaine personnalisé facultatifConnexion aux couleurs de la marque et callbacks OAuthCertificat ACM et alias Route53 facultatif si la hosted zone est disponibleLa propriété DNS et du certificat doit être explicite avant la production.
Identity PoolÉchange les utilisateurs Cognito authentifiés contre des identifiants AWS pour les API signées IAMSéparer AuthenticatedRole de RegisteredRoleUtile pour appeler API Gateway protégé par IAM depuis un frontend statique.
Custom Email SenderRemplace les e-mails Cognito simples par des modèles HTML et parcours de marqueModèles dans S3 ; SES si configuré, sinon Cognito peut rester le fallbackTraitez les modèles comme des actifs versionnés, pas comme du texte saisi dans la console.
Déclencheur Pre Sign-UpValide la qualité de l’inscription avant l’entrée dans le poolreCAPTCHA facultatif, domaines approuvés et liaison des IdP externes par e-mailLes échecs doivent être compréhensibles dans le frontend et suffisamment journalisés.
Déclencheur Pre Token GenerationProjette l’appartenance aux groupes dans les scopes de l’access tokenAjouter des scopes tels que sc.group.registered ou sc.group.adminRend les contrôles de scopes API Gateway plus déclaratifs.
Déclencheur Post ConfirmationPlace les utilisateurs confirmés dans le groupe RegisteredTraiter uniquement les vraies confirmations d’inscriptionSépare « authentifié » de « suffisamment inscrit pour appeler les API ».
OutputsPermettent aux autres piles et extensions de consommer les artefacts d’identitéExposer IDs du pool et du client, domaine, rôles, groupes et ARN de fonctionsLes outputs sont le contrat entre cette pile et le reste de la plateforme.

Modèle de jetons et d’autorisation

Cognito expose plusieurs artefacts d’identité aux rôles différents. Ce tableau sépare authentification navigateur, groupes, scopes, identifiants AWS temporaires et autorisation côté service.

CoucheArtefactCe qu’il prouveCe qu’il ne doit pas faire
Gatey / navigateurJetons Cognito et état d’authentification localL’utilisateur a terminé le parcours Cognito configuréStocker des secrets sur le serveur WordPress ou transmettre les mots de passe par PHP.
Groupes du User Poolregistered, admin ou groupes propres au projetL’utilisateur appartient à un rôle métierDevenir le seul point d’application à l’exécution.
Scopes de l’access tokensc.group.<group>Le jeton transporte un contexte de rôle lisible par l’APIRemplacer l’autorisation backend lorsque la propriété d’une ressource compte.
Rôle Identity PoolAuthenticatedRole ou RegisteredRoleLe navigateur peut obtenir des identifiants AWS temporaires pour les actions autoriséesAccorder des permissions larges au niveau du compte.
Méthode API GatewayScope Cognito ou autorisation IAMLa route applique l’identité à la frontière du serviceDépendre de boutons masqués ou de restrictions uniquement en CSS.

Modes de défaillance opérationnels

Les échecs d’identité ressemblent souvent à de simples problèmes de connexion alors que la cause concerne e-mail, fédération, scopes ou DNS. Ce tableau relie les symptômes à la frontière opérationnelle à examiner.

DéfaillanceSymptôme visibleCause probableOrientation du runbook
reCAPTCHA refuse l’inscriptionL’utilisateur ne peut pas créer de compteClé ou secret incorrect, jeton périmé, score faible ou action différenteVérifiez le chemin du jeton clientMetadata, le secret SSM, le seuil et les logs Lambda.
L’e-mail personnalisé n’arrive pasAucun e-mail de confirmation ou mot de passeIdentité SES non vérifiée, sandbox, lecture du modèle impossible ou FROM différentVérifiez l’identité SES, les logs CloudWatch, la clé S3 du modèle et le fallback.
La connexion sociale crée des doublonsLe même e-mail apparaît sous plusieurs identités fournisseurLiaison des IdP externes désactivée ou en échecExaminez les logs Pre Sign-Up et les permissions AdminLinkProviderForUser.
Appel API refusé après connexionLe frontend authentifie, mais l’API renvoie 401/403Utilisateur absent de Registered, scopes manquants, rôle non mappé ou authorizer incorrectContrôlez scopes, groupes, logs Post Confirmation et authorizer API Gateway.
Le domaine personnalisé échoueHosted UI ou domaine de callback inaccessibleRégion ou validation du certificat, zone Route53 différente ou cible d’aliasValidez le certificat ACM, la propriété DNS et l’état du domaine Cognito.

Parcours de mise en œuvre

Construisez l’identité autour de la frontière applicative, pas d’une session WordPress

Le travail d’exploitation utile commence après la création du User Pool : fédération, cycle de vie, autorisation et configuration reproductible.

  1. Définissez le propriétaire de l’identité — Gardez WordPress centré sur le contenu et la présentation. Utilisez Cognito lorsque la même identité visiteur doit s’étendre aux pages statiques, API ou autres surfaces applicatives.
  2. Configurez les parcours nécessaires de connexion et de fédération — Activez avec Cognito et Gatey uniquement les parcours de connexion, inscription, MFA, profil, fournisseurs sociaux, SAML ou OIDC réellement nécessaires au projet.
  3. Associez l’identité aux autorisations d’exécution — Utilisez claims, scopes, groupes ou identifiants IAM facultatifs afin que les backends autorisent les actions indépendamment de leur visibilité dans le frontend.
  4. Testez le cycle de vie et les échecs — Vérifiez confirmation, récupération du mot de passe, MFA, connexion du fournisseur, changement de groupe, expiration du jeton et refus API séparément du rendu des pages.

Quand Cognito doit détenir la couche d’identité applicative

Bon choix

L’identité doit dépasser WordPress

  • Les mêmes utilisateurs doivent se connecter à un frontend statique ou à des pages où WordPress PHP ne traite pas la requête.
  • L’identité frontend doit autoriser des API, ressources protégées ou autres surfaces applicatives.
  • L’organisation possède déjà ou prévoit des exigences de fédération sociale, SAML ou OIDC.

Conserver l’authentification native WordPress

Les sessions WordPress peuvent être plus simples lorsque

  • seuls wp-admin ou des pages WordPress dynamiques ordinaires exigent des utilisateurs authentifiés.
  • aucune application externe, API protégée ou interface statique n’a besoin de la même identité.
  • les extensions existantes dépendent directement des utilisateurs et sessions WordPress et qu’aucune raison métier ne justifie un sous-système distinct.

Guides de décision

Décisions d’identité prises en charge par cette architecture

Quand Amazon Cognito doit-il remplacer WordPress comme couche d’identité ?

Consultez Amazon Cognito comme couche d’identité à la place de WordPress. WordPress reste le CMS et Cognito détient l’identité des visiteurs pour l’application élargie.

Comment connecter des fournisseurs SAML ou OIDC existants ?

Consultez Connecter WordPress aux fournisseurs SAML et OIDC existants. Cognito sert de centre de fédération et Gatey conserve une seule expérience de connexion frontend.

Comment cela fonctionne-t-il sur WordPress statique ?

Consultez Ajouter la connexion à WordPress statique sans réintroduire les sessions PHP. La connexion Cognito dans le navigateur survit à la publication statique car elle ne dépend pas d’une session PHP WordPress.

Quelle différence entre fichiers statiques protégés et API protégées ?

Pour la diffusion statique, consultez Sécuriser WordPress statique avec des cookies signés CloudFront. Les API doivent valider séparément JWT, IAM ou un autre mécanisme pris en charge.

Commencez par la décision d’identité

Utilisez Cognito lorsque l’identité du visiteur doit survivre à la requête WordPress

Choisissez le guide sur l’identité applicative pour la décision principale, ou le guide SSO lorsque la fédération avec des fournisseurs existants constitue l’exigence centrale.