【发布时间】:2020-01-10 20:48:45
【问题描述】:
如何创建一个使用 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 中的一些用户设置以避免电子邮件。有没有人有类似的经历?或者这不可能在没有电子邮件的情况下创建用户?
【问题讨论】:
标签: c# aws-sdk amazon-cognito