Sto provando a comunicare con un client WebAPI self-hosted utilizzando HttpClient
. Il cliente è stato creato con il seguente codice:HTTPClient che ottiene due 401 prima del successo (invio di token errati)
HttpClientHandler clientHandler = new HttpClientHandler()
{
UseDefaultCredentials = true,
PreAuthenticate = true
};
var client = new HttpClient(clientHandler);
sul lato server abbiamo impostato:
HttpListener listener = (HttpListener)app.Properties[typeof(HttpListener).FullName];
listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication;
nel file Startup
.
Il problema è che ottengo due errori (o uno dopo la preautenticazione) 401 prima che la richiesta venga elaborata.
Nel violinista sequenza si presenta così:
First request:
Authorization: Negotiate TlRMTVNTUAABAAAAl7II4gcABwAxAAAACQAJACgAAAAGAbEdAAAAD1dTMTEzLTEyMFNXVC0xMTM=
Answer:
WWW-Authenticate: Negotiate TlRMTVNTUAACAAAADgAOADgAAAAVwonisrQOBMTKHhKwCkgCAAAAAJoAmgBGAAAABgGxHQAAAA9TAFcAVAAtADEAMQAzAAIADgBTAFcAVAAtADEAMQAzAAEAEgBXAFMAMQAxADMALQAxADIAMAAEABYAcwB3AHQALQAxADEAMwAuAGwAbwBjAAMAKgBXAFMAMQAxADMALQAxADIAMAAuAHMAdwB0AC0AMQAxADMALgBsAG8AYwAFABYAQQBMAEQASQA5ADkAOQAuAGwAbwBjAAcACACkGh0XVY3QAQAAAAA=
Second request (succeeds):
Authorization: Negotiate TlRMTVNTUAADAAAAAAAAAFgAAAAAAAAAWAAAAAAAAABYAAAAAAAAAFgAAAAAAAAAWAAAAAAAAABYAAAAFcKI4gYBsR0AAAAPfJafWSuLL0sAXYtWCynOqg==
Allora, perché non è il mio client che invia la corretta autorizzazione gettone la prima volta, ma sempre ha bisogno di questo approccio in due tempi?
si prega di condividere l'autenticazione Handler –
Eventuali duplicati di http://stackoverflow.com/questions/24021413/can-i -make-httpwebrequest-include-windows-credentials-without-waiting-for-a-401 – Mike
Hai parlato di due 401, ma hai mostrato solo una richiesta non riuscita. Potresti mostrare un esempio completo di richiesta/risposta (fail), richiesta/risposta (fail), richiesta/risposta (successo)? –