Beispiel #1
0
        /// <summary>
        /// Validate current JWT server authorization token and renew if expired
        /// </summary>
        /// <param name="context">context</param>
        /// <returns>true if authorization server's authorization token is valid, false if not</returns>
        private async Task <bool> Validate(IWorkContext context, bool renewIfRequired = true)
        {
            Verify.IsNotNull(nameof(context), context);

            if (_jwtTokenDetails != null && !_jwtTokenDetails.IsExpired)
            {
                return(true);
            }

            string requestToken = await _clientTokenManager.CreateRequestToken(context);

            if (requestToken == null || !renewIfRequired)
            {
                return(false);
            }

            RestResponse <string> response = await _clientTokenManager.RequestServerAuthorizationToken(context, requestToken);

            response.AssertSuccessStatusCode(context);
            Verify.IsNotNull(nameof(response.Value), response.Value);

            JwtTokenDetails jwtToken = await _clientTokenManager.ParseAuthorizationToken(context, response.Value);

            _jwtTokenDetails = jwtToken;
            return(true);
        }
Beispiel #2
0
        public static async Task <RestResponse> EnsureSuccessStatusCodeAsync(this RestResponse httpResponseResult, IWorkContext context, HttpStatusCode[] acceptedCodes = null)
        {
            try
            {
                httpResponseResult.AssertSuccessStatusCode(context, acceptedCodes: acceptedCodes);
            }
            catch (RestResponseException)
            {
                await httpResponseResult.GetErrorMessageAsync(context);

                throw;
            }

            return(httpResponseResult);
        }