2013-11-11 3 views
0

Я смотрел на Box OAuth2.0 View Controller: https://github.com/box/box-ios-sdk-v2/blob/master/BoxSDK/OAuth2/BoxAuthorizationViewController.mwillSendRequestForAuthenticationChallenge цель

Они имеют следующий код:

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 
{ 

Какова цель включения такого кода?

Нужно ли при показе потока oauth2.0 в веб-просмотре?

ответ

1

Проще говоря, этот метод делегата отражает схему «Аутентификация доступа», указанную в HTTP 1.1, особенно RFC 2617.

Когда клиент, не прошедший проверку подлинности, отправляет запрос, сервер «бросает вызов» клиенту, отправив клиенту 401 (несанкционированное) ответное сообщение вместе с заголовком WWW-Authenticate в ответе. Затем клиент, в свою очередь, может ответить на этот конкретный «вызов», указанный в заголовке WWW-Authenticate, с предоставлением соответствующих учетных данных и повторением запроса.

Что именно клиент должен делать, зависит от типа вызова и схемы авторизации, а также требований клиента. Схема загрузки URL уже реализует поведение по умолчанию, которое во многих случаях достаточно, но когда поведение по умолчанию не подходит, вы можете реализовать этот делегат и адаптировать его к вашим конкретным потребностям.

IMO, клиентская библиотека OAuth должна реализовать этот делегат. Когда аутентификация клиента завершилась неудачно, сервер может отправить свой код статуса HTTP 401 (неавторизованный) в свой ответ, включая поле заголовка WWW-Authenticate, указывающее, какие схемы аутентификации поддерживаются. (См. §5.2. Ответ об ошибкеRFC 6749).

Реализация этого метода делегата является действительно передовой темой, тем более что это влияет на безопасность. Поэтому я настоятельно рекомендую прочитать дополнительные материалы, прежде чем случайно отключить проверку доверия HTTP-серверов. ;)

+0

Как мы можем добавить токен в этот метод? –