NSURLAuthenticationChallenge
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSObjectProtocol
-
NSSecureCoding
-
Печатаемый
-
NSObject
-
NSSecureCoding
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в iOS 2.0 и позже.
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.
-
Возвращает инициализированный объект NSURLAuthenticationChallenge копирование свойств от
challenge
, и установка отправителя аутентификации кsender
.Объявление
Swift
init(authenticationChallenge
challenge
: NSURLAuthenticationChallenge, sendersender
: NSURLAuthenticationChallengeSender)Objective C
- (instancetype)initWithAuthenticationChallenge:(NSURLAuthenticationChallenge *)
challenge
sender:(id<NSURLAuthenticationChallengeSender>)sender
Параметры
challenge
Проблема, которую Вы хотите скопировать.
sender
Отправитель, которого Вы хотите использовать для нового объекта. Как правило, отправитель является экземпляром Вашего пользовательского
NSURLProtocol
подкласс, который названный этим методом.Обсуждение
Большинство приложений не создает сами запросы аутентификации. Однако Вы, возможно, должны были бы создать объекты запроса аутентификации при добавлении поддержки пользовательских сетевых протоколов как часть пользовательского
NSURLProtocol
подклассы.При разделении на подклассы существующего
NSURLProtocol
подкласс, этот метод позволяет Вам изменить проблемы, выпущенные существующим классом так, чтобы Ваш подкласс получил любые ответы на те проблемы.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
-
init (protectionSpace:proposedCredential:previousFailureCount:failureResponse:error:sender:) - initWithProtectionSpace:proposedCredential:previousFailureCount:failureResponse:error:sender:
Возвращает инициализированный
NSURLAuthenticationChallenge
объект для указанного пространства защиты, учетных данных, числа отказов, ответа сервера, ошибки и отправителя.Объявление
Swift
init(protectionSpace
space
: NSURLProtectionSpace, proposedCredentialcredential
: NSURLCredential?, previousFailureCountcount
: Int, failureResponseresponse
: NSURLResponse?, errorerror
: NSError?, sendersender
: NSURLAuthenticationChallengeSender)Objective C
- (instancetype)initWithProtectionSpace:(NSURLProtectionSpace *)
space
proposedCredential:(NSURLCredential *)credential
previousFailureCount:(NSInteger)count
failureResponse:(NSURLResponse *)response
error:(NSError *)error
sender:(id<NSURLAuthenticationChallengeSender>)sender
Параметры
space
Пространство защиты для проблемы URL. Это предоставляет дополнительную информацию о запросе аутентификации, таком как узел, порт, область аутентификации, и т.д.
credential
Предложенные учетные данные, или
nil
.count
Общее количество предыдущих отказов для этого запроса, включая отказы для других пробелов защиты.
response
NSURLResponse
объект, содержащий ответ сервера, заставивший Вас генерировать запрос аутентификации, илиnil
если никакой объект ответа не применим к проблеме.error
NSError
объект, описывающий ошибку аутентификации, илиnil
если это не применимо к проблеме.sender
Объект, инициировавший запрос аутентификации (обычно, объект который названный этим методом).
Обсуждение
Большинство приложений не создает сами запросы аутентификации. Однако Вы, возможно, должны были бы создать объекты запроса аутентификации при добавлении поддержки пользовательских сетевых протоколов как часть пользовательского
NSURLProtocol
подклассы.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
-
error
СвойствоОшибочный объект представление последней ошибки аутентификации. (только для чтения)
Объявление
Swift
@NSCopying var error: NSError? { get }
Objective C
@property(readonly, copy) NSError *error
Обсуждение
Этот метод возвраты
nil
если протокол не использует ошибки указать ошибку аутентификации.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
failureResponse
СвойствоОбъект ответа URL представление последней ошибки аутентификации. (только для чтения)
Объявление
Swift
@NSCopying var failureResponse: NSURLResponse? { get }
Objective C
@property(readonly, copy) NSURLResponse *failureResponse
Обсуждение
Этот метод возвраты
nil
если протокол не использует ответы для указания ошибки аутентификации.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
previousFailureCount
СвойствоКоличество получателя неудачных попыток аутентификации. (только для чтения)
Объявление
Swift
var previousFailureCount: Int { get }
Objective C
@property(readonly) NSInteger previousFailureCount
Обсуждение
Предыдущее число отказов включает отказы от всех пробелов защиты, не только текущий.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
-
proposedCredential
СвойствоПредложенные учетные данные для этой проблемы. (только для чтения)
Объявление
Swift
@NSCopying var proposedCredential: NSURLCredential? { get }
Objective C
@property(readonly, copy) NSURLCredential *proposedCredential
Обсуждение
Этот метод возвраты
nil
при отсутствии учетных данных по умолчанию для этой проблемы.Если Вы ранее попытались аутентифицировать и перестали работать, этот метод возвращает новые неработающие учетные данные.
Если предложенные учетные данные не
nil
и возвратыYES
true
когда Вы вызываетеhasPassword
метод, тогда учетные данные готовы использовать как есть. Если предложенные учетные данныеhasPassword
возвраты методаNO
false
, тогда учетные данные обеспечивают имя пользователя по умолчанию, и клиент должен предложить пользователю соответствующий пароль.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
-
protectionSpace
СвойствоПространство защиты получателя. (только для чтения)
Объявление
Swift
@NSCopying var protectionSpace: NSURLProtectionSpace { get }
Objective C
@property(readonly, copy) NSURLProtectionSpace *protectionSpace
Обсуждение
Объект пространства защиты предоставляет дополнительную информацию о запросе аутентификации, таком как узел, порт, область аутентификации, и т.д. Пространство защиты также говорит Вам, просит ли запрос аутентификации, чтобы Вы обеспечили учетные данные пользователя или проверили учетные данные TLS, предоставленные сервером.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
-
sender
СвойствоОтправитель получателя.
Объявление
Swift
var sender: NSURLAuthenticationChallengeSender { get }
Objective C
@property(readonly, retain) id< NSURLAuthenticationChallengeSender > sender
Обсуждение
Отправитель обычно является экземпляром
NSURLProtocol
подкласс, первоначально получивший запрос аутентификации.Если Вы используете
NSURLSession
API, это значение является чисто информационным, потому что необходимо реагировать на запросы аутентификации передающими константами к предоставленным блокам обработчика завершения.Однако, если Вы используете
NSURLConnection
илиNSURLDownload
API, в Вашем методе делегата обработчика аутентификации, Вы реагируете на запросы аутентификации вызывающими методами, определенными вNSURLAuthenticationChallengeSender
протокол на этом объекте отправителя после того, как Вы заканчиваете обрабатывать запрос аутентификации.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.