Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Construire votre intégration
Comprendre le cycle de vie des demandes
Avant de créer votre intégration, il est important de comprendre comment les demandes de délégation progressent de leur création à leur réalisation.
États de la demande
Une demande de délégation passe par les états suivants :
| State | Description |
|---|---|
| Non attribué | Demande créée mais pas encore associée à un compte client et à un principal IAM. La demande peut avoir été créée sans spécifier de compte cible, ou avec un identifiant de compte cible mais n'a pas encore été réclamée par le propriétaire du compte. |
| Attribué | Demande associée à un compte client et en attente d'examen |
| En attente d'approbation | Le client a transmis la demande à un administrateur pour approbation |
| Acceptée | Demande approuvée par le client mais le jeton d'échange n'a pas encore été publié |
| Finalisé | Jeton d'échange communiqué au fournisseur du produit. La période de délégation (validité du jeton d'échange) commence lorsque la demande atteint l'état finalisé |
| Refusée | Demande rejetée par le client |
| Expiré | Demande expirée en raison d'une inactivité ou d'un délai d'attente |
Transitions entre États
Flux normal (voie d'approbation)
Non attribué → Assigné : le client associe la demande à son compte
Assigné → Accepté OU attribué → En attente d'approbation : le client approuve la demande directement OU la transmet à l'administrateur pour examen
En attente d'approbation → Acceptée : l'administrateur approuve la demande
Accepté → Finalisé : le client libère le jeton d'échange
Voie de rejet
Attribué → Rejeté : le client rejette la demande
En attente d'approbation → Rejeté : l'administrateur rejette la demande
Accepté → Rejeté : le client révoque son approbation avant de libérer le jeton
Chemin d'expiration
Les demandes expirent automatiquement si aucune action n'est entreprise dans le délai spécifié :
Non attribué → Expiré (1 jour)
Assigné → Expiré (7 jours)
En attente d'approbation → Expiré (7 jours)
Accepté → Expiré (7 jours)
Rejeté → Expiré (7 jours)
Finalisé → Expiré (7 jours)
États du terminal
Les états suivants sont terminaux (aucune autre transition) :
Finalisé : jeton d'échange envoyé
Rejeté : la demande a été refusée
Expiré : demande expirée ou période de délégation terminée
Les demandes expirées sont finalement supprimées du système après la période de conservation.
Gestion des états des demandes de délégation dans votre application
En tant que partenaire, vous devez suivre l'état des demandes de délégation dans votre système et les communiquer à vos clients. Lorsque vous recevez des notifications SNS concernant des changements d'état, stockez ces mises à jour dans votre backend et reflétez-les dans votre interface utilisateur destinée aux clients. Portez une attention particulière à l'état En attente d'approbation : lorsqu'un client transmet une demande à un administrateur pour examen, il vous AWS envoie une notification en attente d'approbation. Les demandes peuvent rester dans cet état jusqu'à 7 jours en attendant l'intervention de l'administrateur. Pendant ce temps, montrez aux clients que leur demande est en attente de l'approbation de l'administrateur dans votre application. Envisagez de fournir un lien profond vers la AWS console où les clients peuvent vérifier l'état de la demande ou effectuer un suivi auprès de leur administrateur. Pour une bonne expérience d'intégration, il est important de gérer correctement la machine d'état dans votre backend et de communiquer les informations d'état correctes aux clients à chaque étape.
Configuration des notifications
IAM utilise Amazon Simple Notification Service (SNS) pour vous communiquer les modifications de l'état des demandes de délégation. Lorsque vous créez une demande de délégation, vous devez fournir un ARN de rubrique SNS à partir de votre AWS compte enregistré. IAM publiera des messages sur cette rubrique pour les événements importants, notamment lorsque les clients approuvent ou rejettent des demandes et lorsque le jeton d'échange est prêt.
Note
Les sujets SNS ne peuvent pas se trouver dans des régions optionnelles. AWS Votre rubrique SNS doit se trouver dans une AWS région activée par défaut. Pour obtenir la liste des régions admises, consultez la section Gestion des AWS régions dans le guide de gestion des AWS comptes.
Configuration de la rubrique SNS
Pour recevoir des notifications de demande de délégation, vous devez configurer votre rubrique SNS pour accorder à IAM les autorisations nécessaires pour y publier des messages. Ajoutez la déclaration de politique suivante à votre politique relative aux sujets SNS :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowIAMServiceToPublish", "Effect": "Allow", "Principal": { "Service": "iam.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:REGION:ACCOUNT-ID:TOPIC-NAME" } ] }
Important
Le sujet SNS doit figurer sur l'un de vos AWS comptes enregistrés. IAM n'acceptera pas les sujets SNS provenant d'autres comptes. Si la politique thématique n'est pas correctement configurée, vous ne recevrez pas de notifications de changement d'état ni le jeton d'échange.
Types de notifications
IAM envoie deux types de notifications :
StateChange Notifications
Envoyée lorsqu'une demande de délégation passe à un nouvel état (attribuée, en attente d'approbation, acceptée, finalisée, rejetée, expirée).
ExchangeToken Notifications
Envoyé lorsqu'un client libère le jeton de délégation (état Finalisé). Cette notification inclut le jeton d'échange dont vous avez besoin pour obtenir les informations d'identification.
États de notification
Vous recevrez des notifications pour les états de demande de délégation suivants :
| State | Type de notification | Description |
|---|---|---|
| ASSIGNÉ | StateChange | La demande a été associée à un compte client |
| EN ATTENTE D'APPROBATION | StateChange | Le client a transmis la demande à un administrateur pour approbation |
| ACCEPTÉ | StateChange | Le client a approuvé la demande mais n'a pas encore publié le jeton |
| FINALISÉ | StateChange | Le client a publié le jeton d'échange |
| FINALISÉ | ExchangeToken | Cette notification contient le jeton d'échange |
| REFUSÉE | StateChange | Le client a rejeté la demande |
| EXPIRÉ | StateChange | Demande expirée avant d'être terminée |
Format du message de notification
IAM publie des notifications SNS standard. Les informations relatives à la demande de délégation sont contenues dans le champ Message sous forme de chaîne JSON.
Champs communs (toutes les notifications)
| Champ | Type | Description |
|---|---|---|
| Type | String | Soit « StateChange » soit « ExchangeToken » |
| RequestId | String | L'ID de demande de délégation IAM |
| RequestorWorkflowId | String | L'ID de flux de travail que vous avez fourni lors de la création de la demande |
| State | String | État actuel de la demande |
| OwnerAccountId | String | Numéro de AWS compte du client |
| UpdatedAt | String | Horodatage lorsque l'état a changé (format ISO 8601) |
Champs supplémentaires (ExchangeToken notifications uniquement)
| Champ | Type | Description |
|---|---|---|
| ExchangeToken | String | Le jeton à échanger contre des informations d'identification à l'aide de l' AWS STS GetDelegatedAccessToken API |
| ExpiresAt | String | Lorsque l'accès délégué expire (format ISO 8601) |
Exemples de notifications
StateChange Notification
{ "Type": "Notification", "MessageId": "61ee8ad4-6eec-56b5-8f3d-eba57556aa13", "TopicArn": "arn:aws:sns:us-east-1:123456789012:partner-notifications", "Message": "{\"RequestorWorkflowId\":\"workflow-12345\",\"Type\":\"StateChange\",\"RequestId\":\"dr-abc123\",\"State\":\"ACCEPTED\",\"OwnerAccountId\":\"111122223333\",\"UpdatedAt\":\"2025-01-15T10:30:00.123Z\"}", "Timestamp": "2025-01-15T10:30:00.456Z", "SignatureVersion": "1", "Signature": "...", "SigningCertURL": "...", "UnsubscribeURL": "..." }
ExchangeToken Notification
{ "Type": "Notification", "MessageId": "e44e5435-c72c-5333-aba3-354406782f5b", "TopicArn": "arn:aws:sns:us-east-1:123456789012:partner-notifications", "Message": "{\"RequestId\":\"dr-abc123\",\"RequestorWorkflowId\":\"workflow-12345\",\"State\":\"FINALIZED\",\"OwnerAccountId\":\"111122223333\",\"ExchangeToken\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\"ExpiresAt\":\"2025-01-15T18:30:00.123Z\",\"UpdatedAt\":\"2025-01-15T10:30:00.456Z\",\"Type\":\"ExchangeToken\"}", "Timestamp": "2025-01-15T10:30:00.789Z", "SignatureVersion": "1", "Signature": "...", "SigningCertURL": "...", "UnsubscribeURL": "..." }
Échangez des jetons
Un jeton d'échange ou un jeton d'échange est émis par IAM lorsqu'un client accepte et finalise une demande de délégation. Le fournisseur du produit utilise ce jeton d'échange ou d'échange pour appeler l' AWS AWS STS GetDelegatedAccessToken API afin d'obtenir des AWS informations d'identification temporaires avec les autorisations approuvées par les clients. Le jeton d'échange lui-même ne donne pas accès à vos AWS ressources ; il doit être échangé contre des informations d'identification réelles via AWS STS.
Le jeton d'échange ne peut être utilisé que par le compte du fournisseur du produit qui a créé la demande de délégation. Le compte demandeur est intégré au jeton, ce qui garantit que seul le fournisseur de produits autorisé peut obtenir les informations d'identification pour accéder au compte client.
Durée de l'accès
La période de délégation commence lorsque le client libère le jeton d'échange, et non lorsque le fournisseur du produit l'échange. Une fois que le client a libéré le jeton :
Le fournisseur du produit reçoit le jeton via une notification SNS
Ils peuvent immédiatement l'échanger contre des informations d'identification
Les informations d'identification expirent à : heure de publication + durée approuvée
Le fournisseur du produit peut échanger le jeton plusieurs fois avant son expiration pour obtenir de nouvelles informations d'identification si nécessaire.
Rachats multiples
Les fournisseurs de produits peuvent échanger le jeton plusieurs fois pendant la période de validité pour obtenir de nouvelles informations d'identification. Cependant, toutes les informations d'identification obtenues à partir du même jeton d'échange expirent en même temps, en fonction de la date à laquelle vous avez publié le jeton.
Exemple : Si vous approuvez une demande de délégation de 2 heures et que vous libérez le jeton à 10 h 00 :
| Heure de sortie du jeton | Heure d'échange de jetons | Expiration des informations d'identification | Temps utilisable |
|---|---|---|---|
| 10 h | 10 h | 12:00 | 2 heures |
| 10 h | 10 h 20 | 12:00 | 1 heure 40 minutes |
| 10 h | 11 h 40 | 12:00 | 20 minutes |
| 10 h | 12 h 10 | Échec (le jeton a expiré) | 0 minutes |
Comme le montre le tableau, l'échange du jeton plus tard dans la période de validité réduit le temps d'utilisation pour le fournisseur du produit.