c# - 创建帐户状态为 "CONFIRMED"且没有电子邮件地址的 AWS Cognito 用户

标签 c# aws-sdk amazon-cognito

如何使用 C# 创建帐户状态已确认的 Cognito 用户?创建用户后,帐户状态显示 FORCE_CHANGE_PASSWORD。另一件事是我需要创建没有电子邮件地址的用户。

 AmazonCognitoIdentityProviderClient cognitoProvider = 
            new AmazonCognitoIdentityProviderClient(region);

 string userName = "user";
 string tempPassword = "Temp@3434";
 string newPassword = "RealPass@2019";

 AdminCreateUserRequest adminUserCreateRequest = new AdminCreateUserRequest()
 {
     UserPoolId = poolId,
     Username = userName,
     TemporaryPassword = tempPassword 
 };

 AdminCreateUserResponse signUpResponse = await cognitoProvider.AdminCreateUserAsync(adminUserCreateRequest);

管理员发起请求

 Dictionary<string, string> initialParams = new Dictionary<string, string>();
        initialParams.Add("USERNAME", userName);
        initialParams.Add("PASSWORD", tempPassword);

        AdminInitiateAuthRequest initialRequest = new AdminInitiateAuthRequest()
        {
            AuthFlow = AuthFlowType.ADMIN_NO_SRP_AUTH,
            AuthParameters = initialParams,
            ClientId = appClientId_tenantApi,
            UserPoolId = poolId                
        };

        AdminInitiateAuthResponse resInitAuth = await cognitoProvider.AdminInitiateAuthAsync(initialRequest);

InitiateAuthRresponse 将电子邮件作为必需属性。 {[requiredAttributes, ["userAttributes.email"]]}

但是文档并没有这么说。

对于 ADMIN_NO_SRP_AUTH:USERNAME(必需)、SECRET_HASH(如果应用客户端配置了客户端密码)、PASSWORD(必需)、DEVICE_KEY

管理员回应挑战

 var authParameters = new Dictionary<string, string>();
            authParameters.Add("USERNAME", userName);
            authParameters.Add("NEW_PASSWORD", newPassword);

        AdminRespondToAuthChallengeRequest adminAuthRequest = new AdminRespondToAuthChallengeRequest()
        {
            UserPoolId = poolId,
            ClientId = appClientId_tenantApi,
            ChallengeName = ChallengeNameType.NEW_PASSWORD_REQUIRED,
            ChallengeResponses = authParameters,
            Session = session
            };

cognitoProvider.AdminRespondToAuthChallengeAsync(adminAuthRequest);

我想我可能错过了 Cognito 中的一些用户设置以避免电子邮件。任何人都有类似的经历吗?还是没有电子邮件就无法创建用户?

最佳答案

  1. 在创建用户池期间,在常规设置下;照片中的属性cognito creation on aws需要一个来选择必须存在的属性,我相信在你的情况下,电子邮件是默认选择的,因此你得到了质询请求响应。

  2. 管理员创建用户请求要求客户端确认电子邮件以验证用户拥有该电子邮件。

  3. 同样的破解方法是允许用户在您的认知配置上注册自己,然后注册某人,然后输入用户名和密码,然后继续确认他们是管理员

    var signup = await cognitoClient.SignUpAsync(new SignUpRequest
    {
        Username = person.Username,
        ClientId = cognitoOptions.ClientId,
        Password = person.IdNumber,
    });
    
     var confirm = await cognitoClient.AdminConfirmSignUpAsync(new AdminConfirmSignUpRequest
    {
        Username = person.Username,
        UserPoolId = cognitoOptions.UserPoolId
    });
    

关于c# - 创建帐户状态为 "CONFIRMED"且没有电子邮件地址的 AWS Cognito 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57848023/

相关文章:

amazon-web-services - AWS API Gateway/Cognito Userpools/Lambdas 无法传递调用者凭证

amazon-web-services - AWS SSO和AWS Cognito有什么区别?

c# - Google Drive Api - 带有 Entity Framework 的自定义 IDataStore

使用集合时线程安全的 C# 最佳实践(还不是并发的)

c# - 无法解析 ApplicationDbContext 中类型的服务

c# - 使用 Azure 移动服务向非事件用户发送通知。在哪里保存 "lastLoginDate"并对其进行过滤?

visual-studio-2015 - 在 VS2015 中保存 AWS Lambda 项目时出现问题

ruby-on-rails - 如何在 Rails 中从 Amazon s3 读取手动上传的文件(图像/文本)?

amazon-web-services - 使用 Nodejs Lambda 函数删除 AWS S3 对象

amazon-web-services - 如何为未经身份验证的用户使用 AWS Cognito?