如何使用 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 中的一些用户设置以避免电子邮件。任何人都有类似的经历吗?还是没有电子邮件就无法创建用户?
最佳答案
在创建用户池期间,在常规设置下;照片中的属性cognito creation on aws需要一个来选择必须存在的属性,我相信在你的情况下,电子邮件是默认选择的,因此你得到了质询请求响应。
管理员创建用户请求要求客户端确认电子邮件以验证用户拥有该电子邮件。
同样的破解方法是允许用户在您的认知配置上注册自己,然后注册某人,然后输入用户名和密码,然后继续确认他们是管理员
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/