2017-01-05 1 views
3

J'utilise AspNetCore TestServer et j'essaie de me connecter à un service API configuré pour l'authentification NTLM. Le service auquel je me connecte doit accéder à System.Security.Claims.ClaimsPrincipal.Identity.TestServer CreateClient et HttpClientHandler - howto?

De mon application console je peux initialiser il HTTPClient comme suit et il fonctionne

HttpClientHandler handler = new HttpClientHandler() 
{ 
    UseDefaultCredentials = true, 
    PreAuthenticate = true 
}; 

HttpClient client = new HttpClient(handler); 

Cependant, la méthode TestServer CreateClient n'accepte pas HttpClientHandler. Alors, comment configurer pour utiliser UseDefaultCredentials?

+0

L'avez-vous compris? J'ai couru dans cette situation maintenant, cuz d'exigence de signature numérique ici. – fletchsod

Répondre

0

Une option consiste à créer un constructeur surchargé sur votre HttpClientHandler et à recouvrir le HttpClientHandler du TestServer. Là, à partir de la méthode SendAsync vous avez juste besoin Invoquer la méthode SendAsync de celui HttpClientHandler de TestServer comme celui-ci

if (_wrappedMessageHandler != null) 
{ 
    var method = typeof(HttpMessageHandler).GetMethod("SendAsync", BindingFlags.Instance | BindingFlags.NonPublic); 
    var result = method.Invoke(_wrappedMessageHandler, new object[] { request, cancellationToken }); 
    return await (Task<HttpResponseMessage>)result; 
} 
else 
{ 
    var response = await base.SendAsync(request, cancellationToken); 
    return response; 

} 

S'il vous plaît ne hésitez pas à vérifier ma solution à mes blog

0

Vous ne pouvez pas faire des fenêtres auth avec le serveur de test. Une fonctionnalité connexe a été ajoutée pour une version à venir. https://github.com/aspnet/Hosting/pull/1248. Voir les problèmes liés et les PR pour les solutions de contournement via middleware.