CloudFormation의 Cognito User Pool(이메일 주소 및 전화 번호)
CloudFormation에서 Cognito
최근에는 ALB의 내장 인증 등 AWS Cognito를 사용하는 장면이 늘어나고 있다고 생각합니다.
유저 관리를 매니지드로 할 수 있는 것은 이점이라고 생각합니다.
이번에는 CloudFormation에서 Cognito User Pool, Indenty Pool 등을 작성합니다.
User Pool을 만들 때 "이메일 주소와 전화 번호 - 사용자는 이메일 주소 또는 전화 번호를 "사용자 이름"으로 사용하여 가입 및 로그인할 수 있습니다. 를 지정합니다.
이것은 2018년 7/5 현재 Cognito User Pool의 일본어 문서에 쓰여 있지 않은 것 같고, 좋은 느낌의 일본어 기사가 없었기 때문에 기술합니다.
영어 문서에는 쓰여져 있습니다.
AWS::Cognito::UserPool
매니지드 콘솔에서 말하면, 다음의 녀석을 선택한 상태입니다.
아래는 CFn 템플릿입니다.
이번에는 이메일 주소로 로그인을 가정합니다.
포인트는 UserPool UsernameAttributes:
입니다.
이번에는 email
를 지정합니다.
전화번호로 로그인하는 경우는 phone_number
입니다.
기타,
UserPoolClinet는, javascript등으로부터 사용하는 상정으로 시크릿을 무효로 하고 있습니다.
UserPool 이외는 그대로입니다만, IdentityPool을 작성해, 지불하는 권한의 Role등을 기술하고 있습니다.
실행은 다음과 같습니다.$ aws cloudformation deploy --template ./cognito.yaml --stack-name Test --capabilities CAPABILITY_IAM
AWSTemplateFormatVersion: "2010-09-09"
Description: "Cognito Identity Pool and User Pool."
Resources:
UserPool:
Type: AWS::Cognito::UserPool
Properties:
UserPoolName: !Sub "${AWS::StackName}Users"
AdminCreateUserConfig:
AllowAdminCreateUserOnly: false
UsernameAttributes:
- email
AutoVerifiedAttributes:
- email
Policies:
PasswordPolicy:
MinimumLength: 8
Schema:
- Name: email
AttributeDataType: String
DeveloperOnlyAttribute: false
Mutable: true
Required: true
UserPoolClient:
Type: AWS::Cognito::UserPoolClient
Properties:
ClientName: !Sub "${AWS::StackName}Users-client"
GenerateSecret: false
RefreshTokenValidity: 7
UserPoolId:
!Ref UserPool
IdentityPool:
Type: AWS::Cognito::IdentityPool
Properties:
AllowUnauthenticatedIdentities: false
IdentityPoolName: !Sub "${AWS::StackName}Users"
CognitoIdentityProviders:
- ClientId: !Ref UserPoolClient
ProviderName: !Sub "cognito-idp.${AWS::Region}.amazonaws.com/${UserPool}"
AuthenticatedPolicy:
Type: AWS::IAM::ManagedPolicy
Properties:
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- mobileanalytics:PutEvents
- cognito-sync:*
- cognito-identity:*
Resource:
- "*"
AuthenticatedRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action: "sts:AssumeRoleWithWebIdentity"
Principal:
Federated: cognito-identity.amazonaws.com
Condition:
StringEquals:
"cognito-identity.amazonaws.com:aud": !Ref IdentityPool
ForAnyValue:StringLike:
"cognito-identity.amazonaws.com:amr": authenticated
ManagedPolicyArns:
- !Ref AuthenticatedPolicy
RoleAttachment:
Type: AWS::Cognito::IdentityPoolRoleAttachment
Properties:
IdentityPoolId: !Ref IdentityPool
Roles:
authenticated: !GetAtt AuthenticatedRole.Arn
Outputs:
UserPoolId:
Value: !Ref UserPool
Export:
Name: !Sub "${AWS::StackName}-UserPool"
UserPoolArn:
Value: !GetAtt UserPool.Arn
Export:
Name: !Sub "${AWS::StackName}-UserPoolArn"
UserPoolClientId:
Value: !Ref UserPoolClient
Export:
Name: !Sub "${AWS::StackName}-UserPoolClient"
IdentityPoolId:
Value: !Ref IdentityPool
Export:
Name: !Sub "${AWS::StackName}-IdentityPool"
Reference
이 문제에 관하여(CloudFormation의 Cognito User Pool(이메일 주소 및 전화 번호)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dustingu/items/4ba7e3a419f5895df3c2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
AWSTemplateFormatVersion: "2010-09-09"
Description: "Cognito Identity Pool and User Pool."
Resources:
UserPool:
Type: AWS::Cognito::UserPool
Properties:
UserPoolName: !Sub "${AWS::StackName}Users"
AdminCreateUserConfig:
AllowAdminCreateUserOnly: false
UsernameAttributes:
- email
AutoVerifiedAttributes:
- email
Policies:
PasswordPolicy:
MinimumLength: 8
Schema:
- Name: email
AttributeDataType: String
DeveloperOnlyAttribute: false
Mutable: true
Required: true
UserPoolClient:
Type: AWS::Cognito::UserPoolClient
Properties:
ClientName: !Sub "${AWS::StackName}Users-client"
GenerateSecret: false
RefreshTokenValidity: 7
UserPoolId:
!Ref UserPool
IdentityPool:
Type: AWS::Cognito::IdentityPool
Properties:
AllowUnauthenticatedIdentities: false
IdentityPoolName: !Sub "${AWS::StackName}Users"
CognitoIdentityProviders:
- ClientId: !Ref UserPoolClient
ProviderName: !Sub "cognito-idp.${AWS::Region}.amazonaws.com/${UserPool}"
AuthenticatedPolicy:
Type: AWS::IAM::ManagedPolicy
Properties:
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- mobileanalytics:PutEvents
- cognito-sync:*
- cognito-identity:*
Resource:
- "*"
AuthenticatedRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action: "sts:AssumeRoleWithWebIdentity"
Principal:
Federated: cognito-identity.amazonaws.com
Condition:
StringEquals:
"cognito-identity.amazonaws.com:aud": !Ref IdentityPool
ForAnyValue:StringLike:
"cognito-identity.amazonaws.com:amr": authenticated
ManagedPolicyArns:
- !Ref AuthenticatedPolicy
RoleAttachment:
Type: AWS::Cognito::IdentityPoolRoleAttachment
Properties:
IdentityPoolId: !Ref IdentityPool
Roles:
authenticated: !GetAtt AuthenticatedRole.Arn
Outputs:
UserPoolId:
Value: !Ref UserPool
Export:
Name: !Sub "${AWS::StackName}-UserPool"
UserPoolArn:
Value: !GetAtt UserPool.Arn
Export:
Name: !Sub "${AWS::StackName}-UserPoolArn"
UserPoolClientId:
Value: !Ref UserPoolClient
Export:
Name: !Sub "${AWS::StackName}-UserPoolClient"
IdentityPoolId:
Value: !Ref IdentityPool
Export:
Name: !Sub "${AWS::StackName}-IdentityPool"
Reference
이 문제에 관하여(CloudFormation의 Cognito User Pool(이메일 주소 및 전화 번호)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dustingu/items/4ba7e3a419f5895df3c2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)