Example #1
0
 private JwtSecurityToken GetJwtSecurityToken(User user, ExternalLoginProvider loginProvider = ExternalLoginProvider.Local, string externalToken = null)
 {
     return(new JwtSecurityToken(
                issuer: _configuration["TokenConfiguration:Issuer"],
                audience: _configuration["TokenConfiguration:Audience"],
                claims: GetTokenClaims(user, loginProvider, externalToken),
                expires: DateTime.UtcNow.AddMinutes(int.Parse(_configuration["TokenConfiguration:TimeInMinutesOfJwtLife"])),
                signingCredentials: new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["TokenConfiguration:Key"])), SecurityAlgorithms.HmacSha256)
                ));
 }
 public Task <User> GetUserAsync(ExternalLoginProvider loginProvider, string providerKey)
 {
     return(Task <User> .Factory.StartNew(() =>
     {
         return this.BaseDal.Execute(IsolationLevel.ReadCommitted,
                                     (tran) =>
         {
             return this.UsersDal.GetUser(tran, loginProvider, providerKey);
         });
     }));
 }
Example #3
0
 public AuthController(
     ExternalLoginProvider externalLoginProvider,
     IAccountSerivce accountService,
     JwtIssuer jwtIssuer,
     AppSettings appSettings)
 {
     this.externalLoginProvider = externalLoginProvider;
     this.accountService        = accountService;
     this.jwtIssuer             = jwtIssuer;
     this.appSettings           = appSettings;
 }
Example #4
0
        public UserDb GetUser(SqlTransaction transaction, ExternalLoginProvider loginProvider, string providerKey)
        {
            using (var cmd = new SqlCommand("[dbo].[spGetExternalUser]", transaction.Connection, transaction))
            {
                cmd.Parameters.AddWithValue("providerId", loginProvider);
                cmd.Parameters.AddWithValue("providerKey", providerKey);
                cmd.CommandType = CommandType.StoredProcedure;

                return(GetSingleUser(cmd));
            }
        }
Example #5
0
        private IEnumerable <Claim> GetTokenClaims(User user, ExternalLoginProvider loginProvider, string externalToken)
        {
            var claims = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(JwtRegisteredClaimNames.Email, user.Email),
                new Claim(JwtRegisteredClaimNames.NameId, user.Id)
            };

            if (externalToken != null)
            {
                claims.Add(new Claim(JwtRegisteredClaimNames.CHash, externalToken));
                claims.Add(new Claim(JwtRegisteredClaimNames.Typ, loginProvider.ToString()));
            }
            return(claims);
        }
 public ChallengeResult(ExternalLoginProvider loginProvider, ApiController controller)
 {
     LoginProvider = loginProvider;
     Request = controller.Request;
 }
Example #7
0
 private async void SocialLoginAsync(ExternalLoginProvider externalLoginProvider)
 {
     System.Diagnostics.Debug.WriteLine($"Login with {externalLoginProvider.Name} button tapped...");
 }
 public Task<User> FindAsync(ExternalLoginProvider loginProvider, string providerKey)
 {
     return this.UsersManager.GetUserAsync(loginProvider, providerKey);
 }
Example #9
0
 public ChallengeResult(ExternalLoginProvider loginProvider, ApiController controller)
 {
     LoginProvider = loginProvider;
     Request       = controller.Request;
 }
Example #10
0
        private ExternalUserDto CreateExternalUserFromClaims(ICollection <Claim> claims, ExternalLoginProvider externalLoginProvider)
        {
            ExternalUserDto externalUserDto;

            if (externalLoginProvider == ExternalLoginProvider.Google)
            {
                externalUserDto = GetUserFromGoogle(claims);
            }
            else
            {
                externalUserDto = GetUserFromOpenId(claims);
            }
            return(externalUserDto);
        }
        public UserDb GetUser(SqlTransaction transaction, ExternalLoginProvider loginProvider, string providerKey)
        {
            using (var cmd = new SqlCommand("[dbo].[spGetExternalUser]", transaction.Connection, transaction))
            {
                cmd.Parameters.AddWithValue("providerId", loginProvider);
                cmd.Parameters.AddWithValue("providerKey", providerKey);
                cmd.CommandType = CommandType.StoredProcedure;

                return GetSingleUser(cmd);
            }
        }
 public Task<User> GetUserAsync(ExternalLoginProvider loginProvider, string providerKey)
 {
     return Task<User>.Factory.StartNew(() =>
     {
         return this.BaseDal.Execute(IsolationLevel.ReadCommitted,
         (tran) =>
         {
             return this.UsersDal.GetUser(tran, loginProvider, providerKey);
         });
     });
 }
Example #13
0
 public bool IsProviderAvailable(ExternalLoginProvider loginProvider)
 {
     return(_availableProviderOptions.Providers.Any(provider => provider == loginProvider));
 }
        private async Task <IActionResult> HandleExternalInfo(IPAddress userIp, ExternalLoginDataDto externalData, ExternalLoginProvider loginProvider)
        {
            _logger.LogInformation($"User with ip: {userIp} started facebook logging flow");
            if (externalData == null)
            {
                _logger.LogInformation(
                    $"User with ip: {userIp} tried to login with external login provider. Unable to validate external token");
                return(BadRequest());
            }
            var result = await _authService.ExternalLogin(externalData, loginProvider);

            if (result == null)
            {
                _logger.LogInformation(
                    $"User with ip: {userIp} tried to login with external login provider. Unable to register user");
                return(BadRequest());
            }
            return(Ok(result.Token));
        }
Example #15
0
 public Task <User> FindAsync(ExternalLoginProvider loginProvider, string providerKey)
 {
     return(this.UsersManager.GetUserAsync(loginProvider, providerKey));
 }
 public SocialButton(ExternalLoginProvider externalLoginProvider, ICommand tapCommand)
 {
     ExternalLoginProvider = externalLoginProvider;
     TapCommand            = tapCommand;
 }
Example #17
0
        private async Task <User> RegisterUserFromExternalProvider(ExternalLoginDataDto externalData, ExternalLoginProvider loginProvider)
        {
            var user = _mapper.Map <ExternalUserDto, User>(externalData.ExternalUser);

            user.RegisteredWith = loginProvider;
            var result = await _userManager.CreateAsync(user);

            return(result.Succeeded ? user : null);
        }
Example #18
0
        public async Task <TokenResponseDto> ExternalLogin(ExternalLoginDataDto externalData, ExternalLoginProvider loginProvider)
        {
            var user = await GetUserWithBoards(externalData.ExternalUser.Email);

            if (user == null)
            {
                user = await RegisterUserFromExternalProvider(externalData, loginProvider);
            }
            if (user == null)
            {
                return(null);
            }
            if (!user.EmailConfirmed)
            {
                user.EmailConfirmed = true;
                await _userManager.UpdateAsync(user);
            }
            var token         = GetJwtSecurityToken(user, loginProvider, externalData.AccessToken);
            var tokenResponse = CreateTokenResponse(token, user);

            return(tokenResponse);
        }