示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
 private async Task <Account> AuthenticateOauthAsync(AccountAuthenticate auth)
 {
     throw new NotImplementedException();
 }