标签: amazon-cognito-triggers

配置 Cognito 以正确方式通过 SendGrid 等第三方发送电子邮件

我曾尝试调用自定义消息功能通过 SendGrid 发送电子邮件,效果很好,但我没有办法阻止 AWS 通过他们的电子邮件发送。我试图将 设置messageAction为“SUPPRESS”,但出现了另一个问题。由于messageAction仅用于 adminCreateUser 功能,因此不支持自注册。我错过了什么还是我没有正确地做这件事?

amazon-web-services amazon-cognito amazon-cognito-triggers

11
推荐指数
2
解决办法
1259
查看次数

我可以通过 API 网关通过 Lambda 调用 AWS Cognito 吗?

我当前的堆栈是这样的:

  1. 用户通过 AWS Cognito 创建帐户
  2. 触发后确认 lambda,然后将更多用户详细信息添加到数据库中

我的数据库使用subcognito 生成的 id 作为 userId,因此它们是相同的。我还将电子邮件地址复制为数据库中的用户名。我的目的是使用 Cognito 进行身份验证,并使用我自己的数据库来实现我的应用程序的功能。

但是,如果用户希望更新他们的电子邮件地址,我需要在 cognito 和我的数据库中对此进行修改。我第一次尝试在我的 lambda 中使用 cognito 进行调用admin_update_user_attributes,但很快意识到它被阻止对互联网进行外部调用,所以我创建了一个 nat 网关,它可以工作,但成本太高了!

我的第二个想法是通过 cognito,让我的前端进行调用,然后让 cognito 触发 lambda 来更新我的数据库,但我认为这是不可能的。

是否有配置或我缺少的东西能够通过 API 网关通过 lambda 访问 AWS cognito,因为它们都是 AWS 服务。

我不想通过前端进行两个单独的调用,因为这会产生一个完成但另一个不完成的风险。

谢谢

amazon-cognito aws-lambda aws-api-gateway api-gateway amazon-cognito-triggers

8
推荐指数
1
解决办法
9516
查看次数

AWS Cognito:传递社交媒体登录的自定义属性

我想为用户注册实施一个推荐计划,并希望将推荐人信息存储为 Cognito 中的自定义属性。我正在使用 Amplify SDK 来实现同样的目的。

我能够存储自定义登录的自定义属性(使用电子邮件地址和密码),但如何使用“Google”和“Facebook”等社交媒体登录来实现相同的功能?

amazon-web-services amazon-cognito amazon-cognito-facebook amazon-cognito-triggers

8
推荐指数
0
解决办法
277
查看次数

使用 AWS Cognito 迁移触发器迁移社交帐户(Google、Facebook)

我们有一个 Cognito 用户池,我们希望将其迁移到新的用户池以利用一些不同的配置。但是,我们的池包含通过电子邮件、Google 和 Facebook 注册的用户。

我了解如何迁移电子邮件/密码帐户,但我不了解应如何迁移社交帐户。

这个问题中,我可以看到没有办法使用不同的身份验证流程,所以我猜社交帐户也存在一些限制?

我们想到的一种方法是实际手动导入社交帐户。这是将社交帐户迁移到新池的正确方法吗?是否有不同的“AWS 赞助”方法?任何帮助,将不胜感激!

谢谢!

amazon-web-services amazon-cognito amazon-cognito-triggers

7
推荐指数
1
解决办法
453
查看次数

Post Confirmation 不会触发 lambda 函数

我的步骤:

  • 我通过调用 AdminCreateUser API 创建了用户。
  • 我使用我的自定义登录表单进行第一次登录
  • 我更改密码(因为我处于 FORCE_PASSWORD_CHANGE 状态)现在用户已确认
  • 触发器不触发。

amazon-web-services amazon-cognito amazon-cognito-triggers

6
推荐指数
1
解决办法
543
查看次数

Cognito Lambda 触发套接字超时

我的 cognito 资源上有一个用于预注册触发器的 Lambda 触发器。

我正在关注这个示例 https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-sign-up.html#aws-lambda-triggers-pre-registration-example

我遇到套接字超时,但没有找到太多相关文档

{
    "err": {
        "code": "UnexpectedLambdaException",
        "name": "UnexpectedLambdaException",
        "message": "arn:aws:lambda:region-arn:function:confirm failed with error Socket timeout while invoking Lambda function."
    }
}
Run Code Online (Sandbox Code Playgroud)

我的资源定义如下:

"ConfirmPermission" : {
    "Type" : "AWS::Lambda::Permission",
    "Properties" : {
        "Action" : "lambda:InvokeFunction",
        "FunctionName" : { "Fn::GetAtt" : [ "confirm", "Arn" ] },
        "Principal" : "cognito-idp.amazonaws.com",
        "SourceArn" : { "Fn::GetAtt" : [ "Auth", "Arn" ] }
        }
},
"confirm" : {
    "Type": "AWS::Serverless::Function",
    "Properties": {
        "Handler": "index.confirm",
        "Runtime": "nodejs8.10",
        "CodeUri": "./src",
        "FunctionName": …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cognito aws-lambda amazon-cognito-triggers

5
推荐指数
1
解决办法
5036
查看次数

无法使用 CLI 设置 AWS cognito 触发器

我正在尝试使用 AWS-CLI 在 cognito 上设置 lambda 触发器以进行身份​​验证挑战,其中涉及 DefinAuthChallenge、CreateAuthChallenge、VerifyAuthChallenge 等。

aws cognito-idp update-user-pool     --user-pool-id <>    --lambda-config DefineAuthChallenge=<lambda-function-arn>:<function_name>:<function_alias>  --lambda-config CreateAuthChallenge=<lambda-function-arn>:<function_name>:<function_alias> --lambda-config VerifyAuthChallengeResponse=<lambda-function-arn>:<function_name>:<function_alias>
Run Code Online (Sandbox Code Playgroud)

运行此命令后,仅保留最后一个 lambda 触发器配置,并且 DefineAuthChallenge、CreateAuthChallenge 配置丢失。

请帮助我了解如何使用 CLI 在 Cognito 上配置 lambda 触发器。我无法通过 UI 执行此操作,因为函数别名不会出现在 UI 上。因此,AWS-CLI 是我唯一的选择。

aws-cli amazon-cognito aws-lambda amazon-cognito-triggers

5
推荐指数
1
解决办法
1481
查看次数

AWS Cognito 在 authEvents 中发送无效的 DeviceName

我使用CognitoIdentityServiceProvider.adminListUserAuthEvents来获取用户身份验证事件,但收到了无效的结果。我从 Opera 登录,但 Cognito 显示我使用的是 Chrome 8(这是一个错误)。

如果我得到原始数据navigator.userAgent(例如:),我可以解决这个问题Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 OPR/72.0.3815.400,但我只收到这样的数据:

 {
    "EventId": ${EVENT_ID},
    "EventType": "SignIn",
    "CreationDate": ${CREATION_DATE},
    "EventResponse": "Pass",
    "EventRisk": {
      "RiskDecision": "AccountTakeover",
      "RiskLevel": "Low",
      "CompromisedCredentialsDetected": false
    },
    "ChallengeResponses": [
      {
        "ChallengeName": "Password",
        "ChallengeResponse": "Success"
      }
    ],
    "EventContextData": {
      "IpAddress": ${MY_IP_ADDR},
      "DeviceName": "Chrome 8, Linux",
      "City": ${MY_CITY},
      "Country": ${MY_COUNTRY}
    }
  }
Run Code Online (Sandbox Code Playgroud)

我不想做拐杖来澄清这些信息,例如创建preauthCognito 触发器,它将将此信息记录在另一个表中并自己处理此流程

UPD:我在这里找到的检测浏览器的拐杖

UPD 2官方 AWS Github 存储库 …

amazon-web-services amazon-cognito amazon-cognito-triggers

5
推荐指数
1
解决办法
129
查看次数

如何为 CustomMessage_AdminCreateUser 触发器发送自定义消息?

发送用于触发器的自定义电子邮件时CustomMessage_AdminCreateUser,我成功更改了emailSubject从 Amazon Cognito 收到的事件中的属性,但似乎无法更改该emailMessage属性。

从 Cognito 发送的电子邮件包含正确的自定义主题,但该消息根本没有自定义,并且始终是 Cognito 池设置中设置的主题。

处理从 Cognito 接收到的事件的 lambda 处理程序成功地为这些触发器自定义了消息:

  • CustomMessage_SignUp
  • CustomMessage_ResendCode
  • CustomMessage_ForgotPassword

但我似乎无法让它工作(至少不能完全)CustomMessage_AdminCreateUser触发。

我尝试将email_verified用户属性设置为true,以查看该属性是否取决于成功将自定义邮件发送到创建的用户。另外,我尝试在 Docker 容器中运行 lambda 以查看返回到 Cognito 的最终事件的输出,但该事件包含正确的数据,电子邮件主题和电子邮件消息都是自定义的。

def lambda_handler(event, context):
    if event['userPoolId'] == os.getenv('cognitoPoolId'):
        if CustomMessageTriggerEnum.has_value(event.get('triggerSource')):
            custom_message_trigger = CustomMessageTriggerEnum(event.get('triggerSource'))

            if custom_message_trigger == CustomMessageTriggerEnum.CustomMessageAdminCreateUser:
                custom_message_trigger = CustomMessageAdminCreateUser(event)
            else:
                return None

            custom_response = custom_message_trigger.get_custom_response(
                custom_message_trigger.ACTION,
                custom_message_trigger.EMAIL_SUBJECT,
                custom_message_trigger.EMAIL_MESSAGE
            )
            event = custom_message_trigger.set_custom_response(**custom_response)

            return event
Run Code Online (Sandbox Code Playgroud)
class CustomMessageAdminCreateUser(BaseCustomMessageTrigger):
    """ Custom message admin create user trigger …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services amazon-cognito amazon-cognito-triggers

3
推荐指数
2
解决办法
8136
查看次数

如何使用 AWS Cognito 在 .net 上使用忘记密码自定义模板?

我正在使用 cognito 发送自定义电子邮件忘记密码。我需要在哪里设置代码而不触发 lambda?

c# amazon-cognito .net-core amazon-cognito-triggers

3
推荐指数
2
解决办法
1935
查看次数