OK, ich hatte diesen Fehler und habe lange (Jahre) damit gekämpft, als ich mit meiner Ruby on Rails-App interagierte.
Ich hatte Standardanmeldeinformationen eingerichtet, wie in der akzeptierten Antwort beschrieben, habe aber immer noch den Fehler erhalten und mich auf eine didReceiveChallenge-Antwort verlassen, um die Anmeldeinformationen bereitzustellen - zum Glück hat das als Problemumgehung funktioniert.
Aber! Ich habe gerade die Lösung gefunden!
Ich habe an der Vermutung gearbeitet, dass die protectedSpace-Felder nicht mit der Autorisierungsaufforderung vom Ruby on Rails-Server übereinstimmen - und ich habe in das Realm-Feld geschaut, das anscheinend das einzige war, das nicht definiert wurde.
Ich habe zunächst die Server-Antwortheader ausgedruckt, und obwohl ich diese untersuchen konnte, enthielten sie nicht das WWW-Autorisierungsfeld, das das Realm-Feld enthalten hätte.
Ich dachte, das lag vielleicht daran, dass meine Rails-App den Bereich nicht spezifizierte, also fing ich an, die Rails-Seite der Dinge zu betrachten.
Ich fand heraus, dass ich den Bereich im Aufruf an angeben konnte,
authenticate_or_request_with_http_basic
... die ich für die HTTP Basic-Authentifizierung verwende.
Ich habe noch keinen Bereich angegeben, also einen hinzugefügt,
authenticate_or_request_with_http_basic("My Rails App")
Ich habe dann die entsprechende Zeichenfolge zum Schutzbereich hinzugefügt.
NSURLProtectionSpace *protectionSpace =
[[NSURLProtectionSpace alloc] initWithHost:@"myrailsapp.com"
port:443
protocol:NSURLProtectionSpaceHTTPS
realm:@"My Rails App"
authenticationMethod:NSURLAuthenticationMethodHTTPBasic];
Voila! Das hat funktioniert und ich verstehe das nicht mehr,
CredStore - performQuery - Error copying matching creds. Error=-25300
Selbst nachdem ich den Bereich in der Rails-App angegeben habe, sehe ich ihn immer noch nicht im HTTP-Header übergeben. Ich weiß nicht warum, aber zumindest funktioniert er.