Ya tengo funcionando mi plantilla de formación en la nube del grupo de usuarios de cognito y la tengo integrada en mi puerta de enlace api. Pero de alguna manera todavía tengo que configurar manualmente la configuración del cliente de la aplicación, el dominio y las identidades federadas para tener un portal de inicio de sesión que funcione para los usuarios. He estado buscando aquí y allá posibles soluciones para automatizarlas, pero parece que no puedo encontrar nada parecido.
Me gustaría automatizar la configuración de la configuración del cliente de la aplicación, el dominio y las identidades federadas a través de la plantilla sam de formación en la nube para no tener que hacerlo manualmente.
Cualquier sugerencia es muy apreciada. Gracias.
(adjuntos publicados para información adicional)
Creé dos recursos personalizados de CloudFormation para aplicar la configuración del cliente de la aplicación Cognito y el nombre de dominio. Con estos recursos, puede tener un script como este:
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'
El código completo está aquí .
Actualización : desde finales de 2019, AWS Cloudformation admite de forma nativa la configuración del cliente de la aplicación, el dominio y las identidades federadas. Ver otras respuestas.
Parece que no hay forma de proporcionar integración de aplicaciones -> Nombre de dominio y federación -> Proveedores de identidad a través de CloudFormation.
Encontré solo una referencia para el cliente del grupo de usuarios ( Configuración general -> Clientes de la aplicación ), pero no configurará la integración de la aplicación -> Configuración del cliente de la aplicación .
Si necesita automatizar el proceso de proporcionar el nombre de dominio , los proveedores de identidad y la configuración del cliente de la aplicación para el grupo de usuarios, puede hacerlo creando un script personalizado (AWS CLI) o Lambda (AWS SDK) que debe realizarse después de la implementación de la pila.
Consulte el excelente ejemplo ( respuesta a continuación ) que muestra el uso de los recursos personalizados de CloudFormation con Lambda.
CloudFormation agregó el recurso AWS::Cognito::UserPoolDomain para administrar el dominio del grupo de usuarios:
Type: AWS::Cognito::UserPoolDomain Properties: CustomDomainConfig: CertificateArn: !Ref CertificateArn Domain: "your.custom.domain.com" UserPoolId: !Ref UserPool
Además, se ha agregado una configuración a AWS::Cognito::UserPoolClient :
Type: AWS::Cognito::UserPoolClient Properties: AllowedOAuthFlows: - String AllowedOAuthFlowsUserPoolClient: Boolean AllowedOAuthScopes: - String AnalyticsConfiguration: AnalyticsConfiguration CallbackURLs: - String ClientName: String DefaultRedirectURI: String ExplicitAuthFlows: - String GenerateSecret: Boolean LogoutURLs: - String ReadAttributes: - String RefreshTokenValidity: Integer SupportedIdentityProviders: - String UserPoolId: String WriteAttributes: - String