in Application/Utils/LoginProcessor.cs [31:84]
public async Task ExecuteAsync()
{
try
{
var provider = new AmazonCognitoIdentityProviderClient(new AnonymousAWSCredentials(), RegionEndpoint.GetBySystemName(this._userPoolOptions.Region));
var userPool = new CognitoUserPool(this._userPoolOptions.UserPoolId, this._userPoolOptions.UserPoolClientId, provider, this._userPoolOptions.UserPoolClientSecret);
var username = ConsoleUtilties.Prompt("Enter user name:", false);
var password = ConsoleUtilties.Prompt("Enter password:", true);
var user = userPool.GetUser(username);
AuthFlowResponse authResponse = await user.StartWithSrpAuthAsync(new InitiateSrpAuthRequest()
{
Password = password
});
while (!string.IsNullOrEmpty(authResponse.ChallengeName))
{
if (authResponse.ChallengeName == ChallengeNameType.NEW_PASSWORD_REQUIRED)
{
password = ConsoleUtilties.PromptForNewPassword();
authResponse = await user.RespondToNewPasswordRequiredAsync(new RespondToNewPasswordRequiredRequest
{
NewPassword = password,
SessionID = authResponse.SessionID
});
}
}
Console.WriteLine($"Login successful for {username}");
Console.WriteLine($"User id token:{Environment.NewLine}{user.SessionTokens.IdToken}");
var jwtHandler = new JwtSecurityTokenHandler();
var jsonToken = jwtHandler.ReadJwtToken(user.SessionTokens.IdToken);
Console.WriteLine("\nClaims in id token:");
foreach(var claim in jsonToken.Claims)
{
Console.WriteLine($"\t{claim.Type}: {claim.Value}");
}
}
catch(Amazon.CognitoIdentityProvider.AmazonCognitoIdentityProviderException e)
{
Console.Error.WriteLine($"Error logging into Cognito: {e.Message}");
}
catch(Exception e)
{
Console.WriteLine($"Unknown error logging into Cognito: {e.Message}");
Console.WriteLine(e.StackTrace);
}
}