NSURLAuthenticationChallenge
NSURLAuthenticationChallenge инкапсулирует вызов со стороны аутентификации требования сервера от клиента.
Большинство приложений не создает сами запросы аутентификации. Однако Вы, возможно, должны были бы создать объекты запроса аутентификации при добавлении поддержки пользовательских сетевых протоколов как часть пользовательского NSURLProtocol подклассы.
Вместо этого Ваше приложение получает запросы аутентификации в различном NSURLSession, NSURLConnection, и NSURLDownload методы делегата, такой как URLSession:task:didReceiveChallenge:completionHandler:. Эти объекты предоставляют информацию, в которой Вы будете нуждаться при решении, как обработать запрос сервера для аутентификации. В ядре того запроса аутентификации пространство защиты, определяющее тип аутентификации, которую требуют, номер узла и номер порта, сетевой протокол, и (где применимо) область аутентификации (группа связанного URLs на том же сервере, совместно использующего единственный набор учетных данных).
Ваше приложение реагирует на запросы аутентификации путем обеспечения NSURLCredential объект. Подробные данные зависят от API, который Вы используете и от типа проблемы.
На высоком уровне, если Вы обеспечиваете учетные данные пользователя для сервера или прокси, proposedCredential метод обеспечивает учетные данные, соответствующие критерии, указанные в пространстве защиты, полученном от NSURLCredentialStorage класс, обрабатывающий запрос (принимающий такие учетные данные существует).
Если previousFailureCount метод возвращается 0, и предложенные учетные данные существуют, предложенные учетные данные еще не попробовали, что означает, что необходимо попробовать его. Если это возвращает ненулевой результат, то сервер отклонил предложенные учетные данные, и необходимо использовать те учетные данные, чтобы заполнить пароль или диалоговое окно селектора сертификата, затем обеспечить новые учетные данные. Можно создать основанные на пароле учетные данные путем вызова credentialWithUser:password:persistence: метод или создает основанные на сертификате учетные данные с credentialWithIdentity:certificates:persistence:.
Если пространство защиты аутентификации использует NSURLAuthenticationMethodServerTrust метод аутентификации, запрос просит, чтобы Вы проверили подлинность сервера. В этом случае, proposedCredential метод обеспечивает учетные данные на основе сертификатов, которые сервер обеспечил как часть его начального квитирования TLS. Большинство приложений должно запросить обработку значения по умолчанию на запросы аутентификации на основе пространства защиты доверия сервера, но если необходимо переопределить поведение проверки TLS по умолчанию, можно сделать так, как описано в Переопределяющей Проверке Цепочки TLS Правильно.
Для получения дополнительной информации о том, как сеансы URL обрабатывают различные типы запросов аутентификации, см. Ссылку класса NSURLSession и Руководство по программированию Загрузочной системы URL.
Соответствует
-
AnyObject -
CVarArgType -
Сопоставимый -
Hashable -
NSCoding -
NSObjectProtocol -
NSSecureCoding -
Печатаемый -
NSObject -
NSSecureCoding
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.2 с установленным Safari 1.0.
Доступный в OS X v10.2.7 и позже.
-
Возвращает инициализированный объект NSURLAuthenticationChallenge копирование свойств от
challenge, и установка отправителя аутентификации кsender.Объявление
Swift
init(authenticationChallengechallenge: NSURLAuthenticationChallenge, sendersender: NSURLAuthenticationChallengeSender)Objective C
- (instancetype)initWithAuthenticationChallenge:(NSURLAuthenticationChallenge *)challengesender:(id<NSURLAuthenticationChallengeSender>)senderПараметры
challengeПроблема, которую Вы хотите скопировать.
senderОтправитель, которого Вы хотите использовать для нового объекта. Как правило, отправитель является экземпляром Вашего пользовательского
NSURLProtocolподкласс, который названный этим методом.Обсуждение
Большинство приложений не создает сами запросы аутентификации. Однако Вы, возможно, должны были бы создать объекты запроса аутентификации при добавлении поддержки пользовательских сетевых протоколов как часть пользовательского
NSURLProtocolподклассы.При разделении на подклассы существующего
NSURLProtocolподкласс, этот метод позволяет Вам изменить проблемы, выпущенные существующим классом так, чтобы Ваш подкласс получил любые ответы на те проблемы.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 с установленным Safari 1.0.
Доступный в OS X v10.2.7 и позже.
-
init (protectionSpace:proposedCredential:previousFailureCount:failureResponse:error:sender:) - initWithProtectionSpace:proposedCredential:previousFailureCount:failureResponse:error:sender:Возвращает инициализированный
NSURLAuthenticationChallengeобъект для указанного пространства защиты, учетных данных, числа отказов, ответа сервера, ошибки и отправителя.Объявление
Swift
init(protectionSpacespace: NSURLProtectionSpace, proposedCredentialcredential: NSURLCredential?, previousFailureCountcount: Int, failureResponseresponse: NSURLResponse?, errorerror: NSError?, sendersender: NSURLAuthenticationChallengeSender)Objective C
- (instancetype)initWithProtectionSpace:(NSURLProtectionSpace *)spaceproposedCredential:(NSURLCredential *)credentialpreviousFailureCount:(NSInteger)countfailureResponse:(NSURLResponse *)responseerror:(NSError *)errorsender:(id<NSURLAuthenticationChallengeSender>)senderПараметры
spaceПространство защиты для проблемы URL. Это предоставляет дополнительную информацию о запросе аутентификации, таком как узел, порт, область аутентификации, и т.д.
credentialПредложенные учетные данные, или
nil.countОбщее количество предыдущих отказов для этого запроса, включая отказы для других пробелов защиты.
responseNSURLResponseобъект, содержащий ответ сервера, заставивший Вас генерировать запрос аутентификации, илиnilесли никакой объект ответа не применим к проблеме.errorNSErrorобъект, описывающий ошибку аутентификации, илиnilесли это не применимо к проблеме.senderОбъект, инициировавший запрос аутентификации (обычно, объект который названный этим методом).
Обсуждение
Большинство приложений не создает сами запросы аутентификации. Однако Вы, возможно, должны были бы создать объекты запроса аутентификации при добавлении поддержки пользовательских сетевых протоколов как часть пользовательского
NSURLProtocolподклассы.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 с установленным Safari 1.0.
Доступный в OS X v10.2.7 и позже.
-
Ошибочный объект представление последней ошибки аутентификации. (только для чтения)
Объявление
Swift
@NSCopying var error: NSError? { get }Objective C
@property(readonly, copy) NSError *errorОбсуждение
Этот метод возвраты
nilесли протокол не использует ошибки указать ошибку аутентификации.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 с установленным Safari 1.0.
Доступный в OS X v10.2.7 и позже.
См. также
-
failureResponse failureResponseСвойствоОбъект ответа URL представление последней ошибки аутентификации. (только для чтения)
Объявление
Swift
@NSCopying var failureResponse: NSURLResponse? { get }Objective C
@property(readonly, copy) NSURLResponse *failureResponseОбсуждение
Этот метод возвраты
nilесли протокол не использует ответы для указания ошибки аутентификации.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 с установленным Safari 1.0.
Доступный в OS X v10.2.7 и позже.
См. также
-
previousFailureCount previousFailureCountСвойствоКоличество получателя неудачных попыток аутентификации. (только для чтения)
Объявление
Swift
var previousFailureCount: Int { get }Objective C
@property(readonly) NSInteger previousFailureCountОбсуждение
Предыдущее число отказов включает отказы от всех пробелов защиты, не только текущий.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 с установленным Safari 1.0.
Доступный в OS X v10.2.7 и позже.
-
proposedCredential proposedCredentialСвойствоПредложенные учетные данные для этой проблемы. (только для чтения)
Объявление
Swift
@NSCopying var proposedCredential: NSURLCredential? { get }Objective C
@property(readonly, copy) NSURLCredential *proposedCredentialОбсуждение
Этот метод возвраты
nilпри отсутствии учетных данных по умолчанию для этой проблемы.Если Вы ранее попытались аутентифицировать и перестали работать, этот метод возвращает новые неработающие учетные данные.
Если предложенные учетные данные не
nilи возвратыYEStrueкогда Вы вызываетеhasPasswordметод, тогда учетные данные готовы использовать как есть. Если предложенные учетные данныеhasPasswordвозвраты методаNOfalse, тогда учетные данные обеспечивают имя пользователя по умолчанию, и клиент должен предложить пользователю соответствующий пароль.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 с установленным Safari 1.0.
Доступный в OS X v10.2.7 и позже.
-
protectionSpace protectionSpaceСвойствоПространство защиты получателя. (только для чтения)
Объявление
Swift
@NSCopying var protectionSpace: NSURLProtectionSpace { get }Objective C
@property(readonly, copy) NSURLProtectionSpace *protectionSpaceОбсуждение
Объект пространства защиты предоставляет дополнительную информацию о запросе аутентификации, таком как узел, порт, область аутентификации, и т.д. Пространство защиты также говорит Вам, просит ли запрос аутентификации, чтобы Вы обеспечили учетные данные пользователя или проверили учетные данные TLS, предоставленные сервером.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 с установленным Safari 1.0.
Доступный в OS X v10.2.7 и позже.
-
отправитель отправительСвойствоОтправитель получателя.
Объявление
Swift
var sender: NSURLAuthenticationChallengeSender { get }Objective C
@property(readonly, retain) id< NSURLAuthenticationChallengeSender > senderОбсуждение
Отправитель обычно является экземпляром
NSURLProtocolподкласс, первоначально получивший запрос аутентификации.Если Вы используете
NSURLSessionAPI, это значение является чисто информационным, потому что необходимо реагировать на запросы аутентификации передающими константами к предоставленным блокам обработчика завершения.Однако, если Вы используете
NSURLConnectionилиNSURLDownloadAPI, в Вашем методе делегата обработчика аутентификации, Вы реагируете на запросы аутентификации вызывающими методами, определенными вNSURLAuthenticationChallengeSenderпротокол на этом объекте отправителя после того, как Вы заканчиваете обрабатывать запрос аутентификации.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 с установленным Safari 1.0.
Доступный в OS X v10.2.7 и позже.
