public JsonResult Refresh([FromBody] AppTokenModel refreshModel)
        {
            var token        = refreshModel.AccessToken;
            var refreshToken = refreshModel.RefreshToken;

            var principal         = JwtHelper.GetPrincipalFromExpiredToken(token);
            var username          = principal.Identity.Name;
            var savedRefreshToken = _refreshTokenRepository.Get(username); //retrieve the refresh token from a data store

            if (savedRefreshToken != refreshToken)
            {
                throw new SecurityTokenException("Invalid refresh token");
            }

            var newJwtToken     = JwtHelper.GenerateToken(principal.Claims);
            var newRefreshToken = RefreshTokenHelper.GenerateRefreshToken();

            _refreshTokenRepository.Delete(username, refreshToken);
            _refreshTokenRepository.Save(username, newRefreshToken);

            return(Json(new AppTokenModel
            {
                AccessToken = newJwtToken,
                RefreshToken = newRefreshToken
            }));
        }
        public JsonResult Token([FromBody] Form form)
        {
            var username = form.UserName;
            var password = form.Password;

            var identity = GetIdentity(username, password);

            if (identity == null)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json("Invalid username or password."));
            }

            var encodedJwt   = JwtHelper.GenerateToken(identity.Claims);
            var refreshToken = RefreshTokenHelper.GenerateRefreshToken();

            _refreshTokenRepository.Delete(username);
            _refreshTokenRepository.Save(username, refreshToken);

            var response = new AppTokenModel
            {
                AccessToken  = encodedJwt,
                RefreshToken = refreshToken,
                Username     = identity.Name
            };

            return(Json(response));
        }
Ejemplo n.º 3
0
        public UserModel GetUser(AppTokenModel token)
        {
            _logger.Debug($"GetUser id {GetUserName(token)}", token.ToJObject());

            return(new UserModel()
            {
                user_id = GetUserName(token)
            });

            //return _userService.FindByUsername(GetUserName(token));
        }
Ejemplo n.º 4
0
 /// <summary>
 /// 初始化一个新的App服务。
 /// </summary>
 /// <param name="userToken">用户象征。</param>
 /// <param name="appToken">App象征。</param>
 public AppService(string userToken, AppTokenModel appToken)
 {
     if (string.IsNullOrWhiteSpace(userToken))
     {
         throw new ArgumentNullException("userToken");
     }
     if (appToken == null)
     {
         throw new ArgumentNullException("appToken");
     }
     if (string.IsNullOrWhiteSpace(appToken.Id))
     {
         throw new ArgumentException("AppId不能为空。");
     }
     _userToken = userToken;
     _appToken  = appToken.Id;
 }
Ejemplo n.º 5
0
 private static string GetUserName(AppTokenModel token)
 {
     return($"{token.tenant_id}_{token.user_id}");
 }
Ejemplo n.º 6
0
 private bool ValidateTokenExpiry(AppTokenModel model)
 {
     return((DateTime.UtcNow - model.created_on).TotalMilliseconds < AppTokenValidationDuration);
 }