Exemple #1
0
        /// <summary>
        /// Save a refresh token
        /// Returns the refresh token id
        /// </summary>
        /// <param name="refreshToken"></param>
        /// <returns>Refresh token id</returns>
        public async Task <String> SaveRefreshTokenAsync(RefreshTokenModel refreshToken)
        {
            var refreshTokenId = Guid.NewGuid().ToString("n");

            _context.RefreshTokens.Add(new RefreshTokens
            {
                ClientId        = "notneeded",
                ExpiresUtc      = refreshToken.ExpiresUtc,
                IssuedUtc       = refreshToken.IssuedUtc,
                ProtectedTicket = refreshToken.AccessToken,
                Subject         = refreshToken.Subject,
                TokenIdHash     = CryptoMethods.GetSHA512Hash(refreshTokenId)
            });
            await _context.SaveChangesAsync();

            return(refreshTokenId);
        }
Exemple #2
0
        /// <summary>
        /// Remove a token
        /// </summary>
        /// <param name="refreshTokenId"></param>
        /// <returns></returns>
        public async Task RemoveTokenAsync(String refreshTokenId)
        {
            using (var transaction = await _context.Database.BeginTransactionAsync())
            {
                var token = await _context.RefreshTokens.SingleOrDefaultAsync(o => o.TokenIdHash == CryptoMethods.GetSHA512Hash(refreshTokenId));

                if (token != null)
                {
                    _context.RefreshTokens.Remove(token);
                    await _context.SaveChangesAsync();

                    transaction.Commit();
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// Get a
        /// </summary>
        /// <param name="refreshTokenId"></param>
        /// <returns></returns>
        public async Task <RefreshTokenModel> GetRefreshTokenAsync(String refreshTokenId)
        {
            var token = await _context.RefreshTokens.SingleOrDefaultAsync(o => o.TokenIdHash == CryptoMethods.GetSHA512Hash(refreshTokenId) && o.ExpiresUtc >= DateTime.UtcNow);

            return(token != null ? new RefreshTokenModel
            {
                ExpiresUtc = token.ExpiresUtc,
                IssuedUtc = token.IssuedUtc,
                AccessToken = token.ProtectedTicket,
                Subject = token.Subject
            } : null);
        }