CognitoはAWS上のシステムに対して認証・認可を行うサービス。
## Cognitoの処理フロー

## CloudFormationのサンプル
```
AWSTemplateFormatVersion: 2010-09-09
Description: The template for creating Cognito resource.
Parameters:
LambdaFunctionArn:
Type: String
Description: Lambda function arn for lambda permission.
Resources:
# user pool
UserPool:
Type: "AWS::Cognito::UserPool"
Properties:
UserPoolName: sample-user-pool
UsernameAttributes:
- email
AutoVerifiedAttributes:
- email
UserAttributeUpdateSettings:
AttributesRequireVerificationBeforeUpdate:
- email
Schema:
- Name: email
AttributeDataType: String
Mutable: false
Required: true
UsernameConfiguration:
CaseSensitive: false
MfaConfiguration: "OFF"
EmailConfiguration:
EmailSendingAccount: "COGNITO_DEFAULT"
AccountRecoverySetting:
RecoveryMechanisms:
- Name: verified_email
Priority: 1
AdminCreateUserConfig:
AllowAdminCreateUserOnly: false
VerificationMessageTemplate:
DefaultEmailOption: "CONFIRM_WITH_CODE"
LambdaConfig:
PostAuthentication: !Ref LambdaFunctionArn
# user pool client
UserPoolClient:
Type: "AWS::Cognito::UserPoolClient"
DependsOn: UserPool
Properties:
ClientName: sample-apl-client
GenerateSecret: false
UserPoolId: !Ref UserPool
ExplicitAuthFlows:
- ALLOW_REFRESH_TOKEN_AUTH
- ALLOW_USER_SRP_AUTH
## identity pool
IdentityPool:
Type: "AWS::Cognito::IdentityPool"
DependsOn: UserPoolClient
Properties:
AllowClassicFlow: false
IdentityPoolName: sample-id-pool
AllowUnauthenticatedIdentities: false
CognitoIdentityProviders:
- ClientId: !Ref UserPoolClient
ProviderName: !GetAtt UserPool.ProviderName
# role for authorized access to AWS resources
CognitoAuthorizedRole:
Type: "AWS::IAM::Role"
DependsOn: IdentityPool
Properties:
RoleName: "svls-role-cog-idpool"
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Federated: "cognito-identity.amazonaws.com"
Action:
- "sts:AssumeRoleWithWebIdentity"
Condition:
StringEquals:
"cognito-identity.amazonaws.com:aud": !Ref IdentityPool
"ForAnyValue:StringLike":
"cognito-identity.amazonaws.com:amr": authenticated
Policies:
- PolicyName: "CognitoAuthorizedPolicy"
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Action:
- "cognito-identity:GetCredentialsForIdentity"
Resource: "*"
# Attach role to the Identity Pool
IdentityPoolRoleMapping:
Type: "AWS::Cognito::IdentityPoolRoleAttachment"
DependsOn: CognitoAuthorizedRole
Properties:
IdentityPoolId: !Ref IdentityPool
Roles:
authenticated: !GetAtt CognitoAuthorizedRole.Arn
```
0 件のコメント:
コメントを投稿