Esempio n. 1
0
        public async Task GenerateTokenAsync(GetTokenCommand tokenCommand)
        {
            var now        = DateTime.UtcNow;
            var userClaims = GetNamesUserRoles(await _identityRepository.GetUserRoleAsync(tokenCommand.UserId));
            var userRoles  = userClaims as string[] ?? userClaims?.ToArray();
            var claims     = PrepareClaims(tokenCommand.UserId, now, userRoles);
            var expires    = GetExperienceTime(now);

            var signingCredentials = new SigningCredentials(
                new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_securitySettings.Key)),
                SecurityAlgorithms.HmacSha256);

            var jwt = new JwtSecurityToken(
                issuer: _securitySettings.Issuer,
                audience: _securitySettings.Audience,
                claims: claims,
                notBefore: now,
                expires: expires,
                signingCredentials: signingCredentials
                );

            var token        = new JwtSecurityTokenHandler().WriteToken(jwt);
            var refreshToken = await GenerateRefreshTokenAsync(tokenCommand.UserId);

            var objToken = ParsingTokenToDto(token, refreshToken);
            // var jsonToken = ParsingTokenToJson(objToken);

            var tokenDatabaseModel = _mapper.Map <Token>(objToken);

            await _tokenRepository.AddAsync(tokenDatabaseModel, tokenCommand.UserId);

            _cache.Add(GenerateCacheObject(tokenCommand.IdRequest, objToken));
        }
Esempio n. 2
0
        public async Task <LastResponse> GetAuthTokenAsync()
        {
            var command = new GetTokenCommand(this)
            {
                HttpClient = HttpClient
            };

            return(await command.ExecuteAsync());
        }
Esempio n. 3
0
        public async Task RefreshTokenAsync(RefreshTokenCommand refreshTokenCommand)
        {
            var userId = await _tokenRepository.GetUserIdAsync(refreshTokenCommand.RefreshToken);

            var tokenCommand = new GetTokenCommand()
            {
                IdRequest = refreshTokenCommand.IdRequest,
                UserId    = userId
            };

            await GenerateTokenAsync(tokenCommand);
        }
Esempio n. 4
0
        public async Task <IActionResult> Login(GetTokenCommand request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var result = await _mediator.Send(request);

            if (result != null)
            {
                return(Ok(result));
            }

            return(Unauthorized(new InvalidLoginResponse()));
        }
        /// <summary>
        /// 刷新refreshToken[刷新access token时,refresh token也会重新生成]
        /// </summary>
        /// <param name="context">上下文</param>
        /// <returns></returns>
        public override void Receive(AuthenticationTokenReceiveContext context)
        {
            var getTokenCmd    = new GetTokenCommand();
            var removeTokenCmd = new RemoveTokenCommand();

            getTokenCmd.TokenId = context.Token;
            _commandBus.Send(getTokenCmd);

            var refreshToken = getTokenCmd.ExecutionResult;

            if (refreshToken != null)
            {
                context.DeserializeTicket(refreshToken.ProtectedTicket);
                removeTokenCmd.TokenId = context.Token;
                _commandBus.Send(removeTokenCmd);
            }
        }
Esempio n. 6
0
 public async Task <User> Login([FromForm] GetTokenCommand command)
 => await Mediator.Send(command);
Esempio n. 7
0
        public async Task <ActionResult <string> > GetUserToken([FromBody] GetTokenCommand command)
        {
            var token = await Mediator.Send(command);

            return(Ok(token));
        }
        public async Task <IActionResult> Token([FromBody] GetTokenCommand getTokenCommand)
        {
            await this._busClient.PublishAsync(getTokenCommand);

            return(Accepted());
        }