Хорошо, у меня была эта ошибка, и я долго (годы) боролся с ней при взаимодействии с моим приложением Ruby on Rails.
У меня были учетные данные по умолчанию, настроенные, как описано в принятом ответе, но все же возникла ошибка, и я полагался на ответ didReceiveChallenge для предоставления учетных данных - к счастью, это сработало.
Но! Я только что нашел решение!
Я работал с подозрением, что поля protectedSpace не соответствуют запросу авторизации с сервера Ruby on Rails - и я заглянул в поле области, которое, казалось, было единственным, которое оставалось неопределенным.
Я начал с распечатки заголовков ответов сервера, и хотя мне удалось их изучить, они не включали поле WWW-авторизации, которое могло бы включать поле области.
Я подумал, что это могло быть потому, что мое приложение Rails не определяло область, поэтому я начал смотреть на Rails сторону вещей.
Я обнаружил, что могу указать область в вызове,
authenticate_or_request_with_http_basic
... который я использую для аутентификации HTTP Basic.
Я еще не указывал область, поэтому добавил ее,
authenticate_or_request_with_http_basic("My Rails App")
Затем я добавил соответствующую строку в ProtectionSpace,
NSURLProtectionSpace *protectionSpace =
[[NSURLProtectionSpace alloc] initWithHost:@"myrailsapp.com"
port:443
protocol:NSURLProtectionSpaceHTTPS
realm:@"My Rails App"
authenticationMethod:NSURLAuthenticationMethodHTTPBasic];
Вуаля! Это сработало, и я больше не понимаю,
CredStore - performQuery - Error copying matching creds. Error=-25300
Даже после указания области в приложении Rails я все еще не вижу, чтобы она была передана в заголовке HTTP, я не знаю почему, но, по крайней мере, это работает.