Wie kann die Zwischenspeicherung von Anmeldeinformationen auf Windows.Web.Http.HttpClient beendet werden?

Ich habe ein Problem, bei dem eine App versucht, mit verschiedenen Authentifizierungsmethoden vom selben Server auf Ressourcen zuzugreifen. Die beiden Methoden sind:

Credentials (NTLM, Basic usw.)OAuth (Träger)Setup HttpBaseProtocolFilter

DasHttpBaseProtocolFilter ist eingestellt auf:

aching deaktivierAutomatisches Popup für Benutzeroberflächen-Anmeldeinformationen deaktivieren

Cod

HttpBaseProtocolFilter filter = new HttpBaseProtocolFilter();
filter.CacheControl.WriteBehavior = HttpCacheWriteBehavior.NoCache;
filter.CacheControl.ReadBehavior = HttpCacheReadBehavior.MostRecent;
filter.AllowUI = false;
Adding Server Credential

Wenn die Ressource Anmeldeinformationen benötigt, verwende ich:

filter.ServerCredential = new PasswordCredential(
                RequestUri.ToString(),
                UserName,
                Password);

HttpClient httpClient = new HttpClient(filter);
Adding OAuth Token

Wenn die Ressource einen Inhaber-Token benötigt, verwende ich:

HttpClient httpClient = new HttpClient(filter);
httpClient.DefaultRequestHeaders.Authorization = new HttpCredentialsHeaderValue("Bearer", token);

DasServerCredential sind null

filter.ServerCredential = null
Antwort vom Server erhalten
using(httpClient)
{
   using(HttpRequestMessage requestMessage = new HttpRequestMessage(new HttpMethod(method), RequestUri))
   {
       using(HttpResponseMessage response = await httpClient.SendRequestAsync(requestMessage))
       {
           // Do something with response
       }
   }
}
Die Angelegenhei

Wenn dasHttpClient request liefert 200 (OK) mitServerCredential, dann jedes folgendeBearer request gibt auch dann 200 (OK) zurück, wennBearer Token ist ungültig undfilter.ServerCredential ist Null

Es sieht so aus, als ob dasfilter.ServerCredential wird zwischengespeichert und alle nachfolgenden Aufrufe werden mit den zwischengespeicherten Anmeldeinformationen authentifiziert.

Ich muss die App neu starten, wenn ich ein @ machen möchBearer Authentifizierung

Wie kann ich das @ entfernen, deaktivieren oder löscheServerCredential des Windows.Web.Http.HttpClient?

Things ich habe versucht:

Alle Cookies löschen
var cookieManager = filter.CookieManager;
HttpCookieCollection myCookieJar = cookieManager.GetCookies(RequestUri);
foreach (HttpCookie cookie in myCookieJar)
{
    cookieManager.DeleteCookie(cookie);
}

DasmyCookieJar ist leer

Etwas mitPasswordCredentialPropertyStore
Windows.Security.Credentials.PasswordCredentialPropertyStore credentialPropertyStore = new Windows.Security.Credentials.PasswordCredentialPropertyStore();

DascredentialPropertyStore ist leer

UN

PasswordCredentialPropertyStore 's Methode Löschen ist für den internen Gebrauch reserviert und nicht zur Verwendung in Ihrem Code vorgesehen.

Irgendwelche Ideen

Antworten auf die Frage(8)

Ihre Antwort auf die Frage