Hapikit.Credentials.CredentialService.CreateAuthenticationHeaderFromChallenge C# (CSharp) Méthode

CreateAuthenticationHeaderFromChallenge() public méthode

public CreateAuthenticationHeaderFromChallenge ( HttpRequestMessage request, IEnumerable challenges ) : AuthenticationHeaderValue
request System.Net.Http.HttpRequestMessage
challenges IEnumerable
Résultat System.Net.Http.Headers.AuthenticationHeaderValue
        public AuthenticationHeaderValue CreateAuthenticationHeaderFromChallenge(HttpRequestMessage request,IEnumerable<AuthenticationHeaderValue> challenges)
        {
            var originServer = GetOriginUri(request);

            var creds = _credentialCache.GetMatchingCredentials(originServer, challenges);
            
            if (creds != null)
            {
                _lastMatchedCredentials[originServer] = creds;
                return creds.CreateAuthHeader(request);
            }

            return null;
        }

Usage Example

Exemple #1
0
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            // Attempt to reuse last credentials used for the same origin server  (Preauthenticate)
            if (request.Headers.Authorization == null)
            {
                request.Headers.Authorization = _credentialService.CreateAuthenticationHeaderFromRequest(request);
            }

            var response = await base.SendAsync(request, cancellationToken);

            // If request failed and challenge issued
            if (response.StatusCode == HttpStatusCode.Unauthorized && response.Headers.WwwAuthenticate.Count > 0)
            {
                // Can't automatically resend the request if it is not buffered.
                // Not sure how to detect this

                var authHeader = _credentialService.CreateAuthenticationHeaderFromChallenge(request, response.Headers.WwwAuthenticate);
                if (authHeader != null)
                {
                    var newRequest = await CopyRequest(request);

                    newRequest.Headers.Authorization = authHeader;

                    // Resend request with auth header based on challenge
                    response = await base.SendAsync(newRequest, cancellationToken);
                }
            }
            return(response);
        }
All Usage Examples Of Hapikit.Credentials.CredentialService::CreateAuthenticationHeaderFromChallenge