C# 创建帐户状态为“的AWS Cognito用户”;“确认”;而且没有电子邮件地址

C# 创建帐户状态为“的AWS Cognito用户”;“确认”;而且没有电子邮件地址,c#,aws-sdk,amazon-cognito,C#,Aws Sdk,Amazon Cognito,如何使用c#创建帐户状态已确认的Cognito用户?创建用户后,帐户状态显示强制更改密码。另一件事是我需要创建没有电子邮件地址的用户 AmazonCognitoIdentityProviderClient cognitoProvider = new AmazonCognitoIdentityProviderClient(region); string userName = "user"; string tempPassword = "Temp@3434"; s

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

 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);
Dictionary initialParams=new Dictionary();
initialParams.Add(“用户名”,USERNAME);
initialParams.Add(“密码”,tempPassword);
AdminInitiateAuthRequest initialRequest=新的AdminInitiateAuthRequest()
{
AuthFlow=AuthFlowType.ADMIN\u NO\u SRP\u AUTH,
AuthParameters=初始参数,
ClientId=appClientId\u tenantApi,
UserPoolId=poolId
};
AdminInitiateAuthResponse ResiniteAuth=等待cognitoProvider.AdminInitiateAuthAsync(initialRequest);
InitiateAuthRresponse将电子邮件作为必需属性。 {[requiredAttributes,[“userAttributes.email”]}

但文件没有这样说

对于ADMIN\u NO\u SRP\u AUTH:USERNAME(必需)、SECRET\u HASH(如果应用程序客户端配置了客户端SECRET)、PASSWORD(必需)、DEVICE\u 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);
var authParameters=new Dictionary();
添加(“用户名”,用户名);
添加(“新密码”,新密码);
AdminRespondToAuthChallengeRequest adminAuthRequest=新AdminRespondToAuthChallengeRequest()
{
UserPoolId=poolId,
ClientId=appClientId\u tenantApi,
ChallengeName=ChallengeNameType.NEW\u需要密码,
ChallengeResponses=authParameters,
会话=会话
};
cognitoProvider.AdminRespondToAuthChallengeAsync(adminAuthRequest);
我想我可能错过了Cognito中的一些用户设置,以避免发送电子邮件。有没有人有类似的经历?或者这不可能创建没有电子邮件的用户

  • 在创建用户池期间,在“常规设置”下;属性如照片中所示,必须选择必须存在的属性,我相信在您的情况下,电子邮件是默认选择的,因此您得到了质询请求响应

  • 管理员创建用户请求要求客户端确认电子邮件,以验证用户是否拥有该电子邮件

  • 一个相同的黑客将允许用户在您的cognito配置上注册自己,然后注册某人,然后输入用户名和密码,然后继续确认他们是管理员

    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
    });