public async Task <AuthenticationResult> AuthenticateAsync(AccountAuthenticate auth) { if (auth == null) { throw new ArgumentNullException(nameof(auth)); } Account account = null; switch (auth.SsoProvider) { case SingleSignOnProvider.None: account = await AuthenticateCredentialAsync(auth); break; case SingleSignOnProvider.Google: account = await AuthenticateGoogleAsync(auth); break; case SingleSignOnProvider.Facebook: account = await AuthenticateFacebookAsync(auth); break; case SingleSignOnProvider.Microsoft: account = await AuthenticateMicrosoftAsync(auth); break; case SingleSignOnProvider.Twitter: account = await AuthenticateTwitterAsync(auth); break; case SingleSignOnProvider.OAuth: account = await AuthenticateOauthAsync(auth); break; } var result = new AuthenticationResult(); if (account == null) { result.AuthenticationMessage = "Failed to authenticate account with provider or credentials"; } else { string jwt = GenerateJwt(account); result.Token = jwt; } return(result); }
private async Task <Account> AuthenticateCredentialAsync(AccountAuthenticate auth) { var cuenta = await _repo.LoadByEmailAsync(auth.EmailAddress); if (cuenta != null) { byte[] passwordHash = Encoding.Default.GetBytes(cuenta.Password); byte[] givenHash = _enc.GeneratePasswordHash(auth.Password); return(passwordHash.AreBytesEqual(givenHash) ? cuenta : null); } return(cuenta); }
public async Task <IActionResult> AuthenticateAsync([FromBody] AccountAuthenticate credentials) { var authResult = await _service.AuthenticateAsync(credentials); ApiResponse <string> response = new ApiResponse <string>(); IActionResult actionResult = null; if (!string.IsNullOrEmpty(authResult.Token)) { response.Result = Core.OperationResult.Success; response.ResponseBody = authResult.Token; actionResult = Ok(response); } else { response.Result = Core.OperationResult.Error; response.Message = authResult.AuthenticationMessage; actionResult = StatusCode((int)HttpStatusCode.Unauthorized, response); } return(actionResult); }
private async Task <Account> AuthenticateOauthAsync(AccountAuthenticate auth) { throw new NotImplementedException(); }