Exemplo n.º 1
0
        public async Task <ActionResult <LogoutDTO> > LogoutAsync([FromServices] ITokenBlacklistService blacklistService)
        {
            if (authenticationOptions.IsUnsecured)
            {
                return(StatusCode(StatusCodes.Status404NotFound));
            }

            var nonce = User.FindFirst(Nonce.Id).Value;
            var ticks = Convert.ToInt64(User.FindFirst(JwtRegisteredClaimNames.Exp).Value);
            var token = BlacklistedToken.FromUTCTicks(nonce, ticks);

            try
            {
                logger.LogInformation("Blacklisting Token: {@Token}", token);
                await blacklistService.Blacklist(token);
            }
            catch (Exception e)
            {
                logger.LogError("Failed to logout user. Error:{Error}", e.ToString());
            }

            return(Ok(new LogoutDTO {
                LogoutURI = authenticationOptions.LogoutURI?.AbsoluteUri
            }));
        }
Exemplo n.º 2
0
 public void Blacklist(BlacklistedToken token)
 {
     sync.EnterWriteLock();
     try
     {
         blacklist.Add(token.IdNonce);
     }
     finally
     {
         sync.ExitWriteLock();
     }
 }
Exemplo n.º 3
0
        public async Task Blacklist(BlacklistedToken token)
        {
            blacklistCache.Blacklist(token);
            using (var cn = new SqlConnection(opts.ConnectionString))
            {
                await cn.OpenAsync();

                await cn.ExecuteAsync(
                    queryBlacklist,
                    new { idNonce = token.IdNonce, exp = token.Expires },
                    commandType : CommandType.StoredProcedure,
                    commandTimeout : opts.DefaultTimeout
                    );
            }
        }