Exemple #1
0
        public override async Task <string> CreateRefreshTokenAsync(RefreshTokenCreationRequest request)
        {
            Logger.LogDebug("Creating refresh token");

            int lifetime;

            if (request.Client.RefreshTokenExpiration == TokenExpiration.Absolute)
            {
                Logger.LogDebug("Setting an absolute lifetime: {absoluteLifetime}",
                                request.Client.AbsoluteRefreshTokenLifetime);
                lifetime = request.Client.AbsoluteRefreshTokenLifetime;
            }
            else
            {
                lifetime = request.Client.SlidingRefreshTokenLifetime;
                if (request.Client.AbsoluteRefreshTokenLifetime > 0 && lifetime > request.Client.AbsoluteRefreshTokenLifetime)
                {
                    Logger.LogWarning(
                        "Client {clientId}'s configured " + nameof(request.Client.SlidingRefreshTokenLifetime) +
                        " of {slidingLifetime} exceeds its " + nameof(request.Client.AbsoluteRefreshTokenLifetime) +
                        " of {absoluteLifetime}. The refresh_token's sliding lifetime will be capped to the absolute lifetime",
                        request.Client.ClientId, lifetime, request.Client.AbsoluteRefreshTokenLifetime);
                    lifetime = request.Client.AbsoluteRefreshTokenLifetime;
                }

                Logger.LogDebug("Setting a sliding lifetime: {slidingLifetime}", lifetime);
            }
            var formCollection = await _scopedHttpContextRequestForm.GetFormCollectionAsync();

            var originGrantType = formCollection["grant_type"];

            var refreshToken = new RefreshTokenExtra()
            {
                Subject                      = request.Subject,
                ClientId                     = request.Client.ClientId,
                Description                  = request.Description,
                AuthorizedScopes             = request.AuthorizedScopes,
                AuthorizedResourceIndicators = request.AuthorizedResourceIndicators,

                CreationTime    = Clock.UtcNow.UtcDateTime,
                Lifetime        = lifetime,
                OriginGrantType = originGrantType
            };

            refreshToken.SetAccessToken(request.AccessToken, request.RequestedResourceIndicator);

            var handle = await RefreshTokenStore.StoreRefreshTokenAsync(refreshToken);

            return(handle);
        }
Exemple #2
0
        public async Task <string> CreateRefreshTokenAsync(
            ClaimsPrincipal subject, Token accessToken, Client client)
        {
            Logger.LogDebug("Creating refresh token");

            int lifetime;

            if (client.RefreshTokenExpiration == TokenExpiration.Absolute)
            {
                Logger.LogDebug("Setting an absolute lifetime: {absoluteLifetime}",
                                client.AbsoluteRefreshTokenLifetime);
                lifetime = client.AbsoluteRefreshTokenLifetime;
            }
            else
            {
                lifetime = client.SlidingRefreshTokenLifetime;
                if (client.AbsoluteRefreshTokenLifetime > 0 && lifetime > client.AbsoluteRefreshTokenLifetime)
                {
                    Logger.LogWarning(
                        "Client {clientId}'s configured " + nameof(client.SlidingRefreshTokenLifetime) +
                        " of {slidingLifetime} exceeds its " + nameof(client.AbsoluteRefreshTokenLifetime) +
                        " of {absoluteLifetime}. The refresh_token's sliding lifetime will be capped to the absolute lifetime",
                        client.ClientId, lifetime, client.AbsoluteRefreshTokenLifetime);
                    lifetime = client.AbsoluteRefreshTokenLifetime;
                }

                Logger.LogDebug("Setting a sliding lifetime: {slidingLifetime}", lifetime);
            }

            var formCollection = await _scopedHttpContextRequestForm.GetFormCollectionAsync();

            var originGrantType = formCollection["grant_type"];
            var refreshToken    = new RefreshTokenExtra
            {
                CreationTime    = Clock.UtcNow.UtcDateTime,
                Lifetime        = lifetime,
                AccessToken     = accessToken,
                OriginGrantType = originGrantType
            };

            var handle = await RefreshTokenStore.StoreRefreshTokenAsync(refreshToken);

            return(handle);
        }