OK, j'ai eu cette erreur et je me suis battu avec elle pendant longtemps (des années) en interagissant avec mon application Ruby on Rails.
J'avais des informations d'identification par défaut configurées comme décrit dans la réponse acceptée, mais j'ai toujours l'erreur et je me suis appuyée sur une réponse didReceiveChallenge pour fournir les informations d'identification - heureusement, cela a fonctionné comme une solution.
Mais! Je viens de trouver la solution!
Je travaillais sur l'intuition que les champs protectedSpace ne correspondaient pas au défi d'autorisation du serveur Ruby on Rails - et j'ai regardé dans le champ de royaume, qui semblait être le seul à ne pas être défini.
J'ai commencé par imprimer les en-têtes de réponse du serveur, et bien que j'aie pu les examiner, ils n'incluaient pas le champ WWW-Authorization qui aurait inclus le champ realm.
Je pensais que c'était peut-être parce que mon application Rails ne spécifiait pas le domaine, alors j'ai commencé à regarder le côté Rails des choses.
J'ai trouvé que je pouvais spécifier le domaine dans l'appel à,
authenticate_or_request_with_http_basic
... que j'utilise pour l'authentification HTTP Basic.
Je ne spécifiais pas déjà un royaume, alors j'en ai ajouté un,
authenticate_or_request_with_http_basic("My Rails App")
J'ai ensuite ajouté la chaîne correspondante au protectionSpace,
NSURLProtectionSpace *protectionSpace =
[[NSURLProtectionSpace alloc] initWithHost:@"myrailsapp.com"
port:443
protocol:NSURLProtectionSpaceHTTPS
realm:@"My Rails App"
authenticationMethod:NSURLAuthenticationMethodHTTPBasic];
Voila! Cela a fonctionné, et je n'ai plus le,
CredStore - performQuery - Error copying matching creds. Error=-25300
Même après avoir spécifié le domaine dans l'application Rails, je ne le vois toujours pas passé dans l'en-tête HTTP, je ne sais pas pourquoi, mais au moins cela fonctionne.