web-dev-qa-db-fra.com

Cloudformation Cognito - Comment configurer les paramètres de client d'application, le domaine et les identités fédérées via un modèle SAM

Mon modèle de cloudformation de pool d'utilisateurs cognito est déjà opérationnel et intégré à la passerelle api. Cependant, je dois encore configurer manuellement les paramètres du client d'application, le domaine et les identités fédérées pour disposer d'un portail de connexion fonctionnel pour les utilisateurs. J'ai cherché ici et là des solutions possibles pour les automatiser, mais je n'arrive pas à trouver quoi que ce soit près.

J'aimerais automatiser la configuration des paramètres du client d'application, du domaine et des identités fédérées via cloudformation sam template, de sorte que je n'ai pas à les effectuer manuellement.

Les suggestions sont très appréciées. Je vous remercie.

(pièces jointes postées pour des informations supplémentaires)

12
Jeff

Il semble qu'il n'y ait aucun moyen de fournir Intégration d'application -> Nom de domaine et Fédération -> Fournisseurs d'identité via CloudFormation.

J'ai trouvé uniquement la référence pour Client de pool d'utilisateurs (Paramètres généraux -> Clients d'application), mais il ne configurera pas Intégration d'application -> Paramètres du client d'application.

Si vous devez automatiser le processus de fourniture de nom de domaine , fournisseurs d'identité et paramètres du client d'application pour le pool d'utilisateurs , vous pouvez le faire en créant un script personnalisé (AWS CLI) ou Lambda (AWS SDK) à exécuter après le déploiement de la pile.


METTRE À JOUR

Découvrez excellent exemple _ ( réponse ci-dessous ) qui montre l'utilisation de Ressources personnalisées CloudFormation avec Lambda.

15
Michał Z.

J'ai créé deux ressources personnalisées CloudFormation pour appliquer les paramètres du client d'application Cognito et le nom de domaine. Avec ces ressources, vous pouvez avoir un script comme celui-ci:

UserPoolTestClient:
  Type: 'AWS::Cognito::UserPoolClient'
  Properties:
    ClientName: UserPoolTestClient
    GenerateSecret: true
    UserPoolId: !Ref UserPoolTest
UserPoolTestClientSettings:
  Type: 'Custom::CognitoUserPoolClientSettings'
  Properties:
    ServiceToken: !GetAtt CloudFormationCognitoUserPoolClientSettings.Arn
    UserPoolId: !Ref UserPoolTest
    UserPoolClientId: !Ref UserPoolTestClient
    SupportedIdentityProviders:
      - COGNITO
    CallbackURL: 'https://www.Amazon.com'
    LogoutURL: 'https://www.google.com'
    AllowedOAuthFlowsUserPoolClient: true
    AllowedOAuthFlows:
      - code
    AllowedOAuthScopes:
      - openid
UserPoolTestDomain:
  Type: 'Custom::CognitoUserPoolDomain'
  Properties:
    ServiceToken: !GetAtt CloudFormationCognitoUserPoolDomain.Arn
    UserPoolId: !Ref UserPoolTest
    Domain: 'userpool-test-01'

Le code complet est ici .

23
Rosberg Linhares

Je souhaite ajouter une solution différente (proposée par Mickael) car CloudFormation est complexe à mettre en place. cette ligne de commande créera votre domaine après la création de la pile CloudFormation:

 aws cognito-idp create-user-pool-domain --domain test-domain --user-pool-id eu-west-1_xxxxxxxx 

Dans votre déploiement automatisé, vous pouvez ajouter un script qui définit votre domaine. Pas aussi bien que tout ce qui est sur la FK, mais ça marche

0
Tibo