OK, eu tive esse erro e lutei com ele por um longo tempo (anos) ao interagir com meu aplicativo Ruby on Rails.
Eu tinha credenciais padrão configuradas conforme descrito na resposta aceita, mas ainda assim obtive o erro e tenho contado com uma resposta didReceiveChallenge para fornecer as credenciais - felizmente, isso funcionou como uma solução alternativa.
Mas! Acabei de encontrar a solução!
Eu estava trabalhando em um palpite de que os campos protectedSpace não correspondiam ao desafio de autorização do servidor Ruby on Rails - e olhei para o campo de realm, que parecia ser o único que estava sendo deixado indefinido.
Comecei imprimindo os cabeçalhos de resposta do servidor e, embora pudesse examiná-los, eles não incluíam o campo WWW-Authorization que incluiria o campo realm.
Eu pensei que talvez fosse porque meu aplicativo Rails não estava especificando o reino, então comecei a olhar para o lado Rails das coisas.
Eu descobri que poderia especificar o reino na chamada para,
authenticate_or_request_with_http_basic
... que estou usando para autenticação HTTP Basic.
Eu não estava especificando um reino já, então adicionei um,
authenticate_or_request_with_http_basic("My Rails App")
Em seguida, adicionei a string correspondente ao espaço de proteção,
NSURLProtectionSpace *protectionSpace =
[[NSURLProtectionSpace alloc] initWithHost:@"myrailsapp.com"
port:443
protocol:NSURLProtectionSpaceHTTPS
realm:@"My Rails App"
authenticationMethod:NSURLAuthenticationMethodHTTPBasic];
Voila! Isso funcionou, e eu não consigo mais
CredStore - performQuery - Error copying matching creds. Error=-25300
Mesmo depois de especificar o realm no aplicativo Rails, ainda não o vejo passado no cabeçalho HTTP, não sei por que, mas pelo menos funciona.