Oke, saya mengalami kesalahan ini, dan berjuang dengannya untuk waktu yang lama (bertahun-tahun) saat berinteraksi dengan aplikasi Ruby on Rails saya.
Saya memiliki kredensial default yang diatur seperti yang dijelaskan dalam jawaban yang diterima, tetapi masih mendapatkan kesalahan, dan telah mengandalkan respons didReceiveChallenge untuk memberikan kredensial - untungnya itu berfungsi sebagai solusi.
Tapi! Saya baru saja menemukan solusinya!
Saya sedang mengerjakan firasat bahwa bidang protectedSpace tidak cocok dengan tantangan Otorisasi dari server Ruby on Rails - dan saya melihat ke bidang ranah, yang tampaknya menjadi satu-satunya yang tidak ditentukan.
Saya mulai dengan mencetak header respons server, dan meskipun saya dapat memeriksanya, mereka tidak menyertakan bidang Otorisasi WWW yang akan menyertakan bidang ranah.
Saya pikir ini mungkin karena aplikasi Rails saya tidak menentukan ranah, jadi saya mulai melihat ke sisi Rails.
Saya menemukan saya dapat menentukan bidang dalam panggilan ke,
authenticate_or_request_with_http_basic
... yang saya gunakan untuk otentikasi HTTP Basic.
Saya belum menentukan ranah, jadi tambahkan satu,
authenticate_or_request_with_http_basic("My Rails App")
Saya kemudian menambahkan string yang sesuai ke protectionSpace,
NSURLProtectionSpace *protectionSpace =
[[NSURLProtectionSpace alloc] initWithHost:@"myrailsapp.com"
port:443
protocol:NSURLProtectionSpaceHTTPS
realm:@"My Rails App"
authenticationMethod:NSURLAuthenticationMethodHTTPBasic];
Voila! Itu berhasil, dan saya tidak lagi mendapatkan,
CredStore - performQuery - Error copying matching creds. Error=-25300
Bahkan setelah menentukan ranah di aplikasi Rails, saya masih tidak melihatnya diteruskan di header HTTP, saya tidak tahu mengapa, tapi setidaknya berhasil.