cognito/cognito.yaml (109 lines of code) (raw):

AWSTemplateFormatVersion: '2010-09-09' Description: > Panda example Cognito user pool. The following are required fields for users: - email (used as the "identity" of the user, there are no separate usernames - name - given_name - family_name The following fields are optional: - profile - picture - locale Parameters: Name: Type: String Description: The name of the user pool RefreshTokenValidity: Type: Number Description: The time limit, in days, after which the refresh token is no longer valid. CookieName: Type: String Description: The name of the cookie that will be shared across all Panda-enabled applications DomainName: Type: String Description: The name of the domain on which the cookie will be placed CognitoDomainPrefix: Type: String Description: The domain prefix used for hosting the Cognito login UI (https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-assign-domain.html) OAuthCallbacks: Type: String Description: Comma-separated list of OAuth callback URLS - one for each application issuing logins Resources: UserPool: Type: AWS::Cognito::UserPool Properties: AdminCreateUserConfig: AllowAdminCreateUserOnly: true AutoVerifiedAttributes: - email UsernameAttributes: - email UserPoolName: !Ref Name # https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims Schema: - Name: name AttributeDataType: String Mutable: true Required: true - Name: given_name AttributeDataType: String Mutable: true Required: true - Name: family_name AttributeDataType: String Mutable: true Required: true # optional - Name: profile AttributeDataType: String Mutable: true Required: false - Name: picture AttributeDataType: String Mutable: true Required: false - Name: locale AttributeDataType: String Mutable: true Required: false UserPoolDomain: Type: AWS::Cognito::UserPoolDomain Properties: UserPoolId: !Ref UserPool Domain: !Ref CognitoDomainPrefix UserPoolClient: Type: AWS::Cognito::UserPoolClient Properties: AllowedOAuthFlows: - code AllowedOAuthFlowsUserPoolClient: true AllowedOAuthScopes: - email - openid - profile CallbackURLs: !Split [',', !Ref OAuthCallbacks] ExplicitAuthFlows: - USER_PASSWORD_AUTH GenerateSecret: true RefreshTokenValidity: !Ref RefreshTokenValidity UserPoolId: !Ref UserPool SupportedIdentityProviders: - COGNITO SettingsBucket: Type: AWS::S3::Bucket Properties: BucketEncryption: ServerSideEncryptionConfiguration: - ServerSideEncryptionByDefault: SSEAlgorithm: aws:kms Outputs: UserPoolId: Value: !Ref UserPool UserPoolClientId: Value: !Ref UserPoolClient SettingsBucket: Value: !Ref SettingsBucket CookieName: Value: !Ref CookieName PublicSettingsFile: Value: !Sub ${DomainName}.settings.public PrivateSettingsFile: Value: !Sub ${DomainName}.settings