OK, ho riscontrato questo errore e ho combattuto per molto tempo (anni) durante l'interazione con la mia app Ruby on Rails.
Avevo le credenziali predefinite impostate come descritto nella risposta accettata, ma ho comunque ricevuto l'errore e mi sono affidato a una risposta didReceiveChallenge per fornire le credenziali - fortunatamente ha funzionato come una soluzione.
Ma! Ho appena trovato la soluzione!
Stavo pensando che i campi protectedSpace non corrispondessero alla sfida di autorizzazione del server Ruby on Rails - e ho esaminato il campo realm, che sembrava essere l'unico rimasto indefinito.
Ho iniziato stampando le intestazioni di risposta del server e, sebbene fossi stato in grado di esaminarle, non includevano il campo WWW-Authorization che avrebbe incluso il campo realm.
Ho pensato che fosse forse perché la mia app Rails non specificava il reame, quindi ho iniziato a guardare al lato Rails delle cose.
Ho scoperto di poter specificare il regno nella chiamata a,
authenticate_or_request_with_http_basic
... che sto usando per l'autenticazione HTTP di base.
Non stavo già specificando un reame, quindi ne ho aggiunto uno,
authenticate_or_request_with_http_basic("My Rails App")
Ho quindi aggiunto la stringa corrispondente a protectionSpace,
NSURLProtectionSpace *protectionSpace =
[[NSURLProtectionSpace alloc] initWithHost:@"myrailsapp.com"
port:443
protocol:NSURLProtectionSpaceHTTPS
realm:@"My Rails App"
authenticationMethod:NSURLAuthenticationMethodHTTPBasic];
Ecco! Ha funzionato e non ho più il,
CredStore - performQuery - Error copying matching creds. Error=-25300
Anche dopo aver specificato il realm nell'app Rails, non lo vedo ancora passato nell'header HTTP, non so perché, ma almeno funziona.