좋아,이 오류가 발생하여 Ruby on Rails 앱과 상호 작용할 때 오랫동안 (수년) 싸웠습니다.
수락 된 답변에 설명 된대로 기본 자격 증명을 설정했지만 여전히 오류가 발생했으며 didReceiveChallenge 응답에 의존하여 자격 증명을 제공했습니다. 다행히 해결 방법으로 작동했습니다.
그러나! 방금 해결책을 찾았습니다!
나는 protectedSpace 필드가 Ruby on Rails 서버의 Authorization Challenge와 일치하지 않는다는 직감으로 작업하고 있었고, 정의되지 않은 유일한 영역 인 것 같은 영역 필드를 조사했습니다.
나는 서버 응답 헤더를 인쇄하는 것으로 시작했고, 이것을 조사 할 수 있었지만 영역 필드를 포함했을 WWW-Authorization 필드는 포함하지 않았습니다.
Rails 앱이 영역을 지정하지 않았기 때문일 수 있다고 생각했기 때문에 Rails 측면을 살펴보기 시작했습니다.
호출에서 영역을 지정할 수 있다는 것을 알았습니다.
authenticate_or_request_with_http_basic
... HTTP 기본 인증에 사용하고 있습니다.
이미 영역을 지정하지 않았으므로 하나를 추가했습니다.
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 헤더에서 전달되는 것을 볼 수 없으며 이유는 모르겠지만 적어도 작동합니다.