2009-07-10 3 views
1

Есть ли у кого-нибудь пример вызова веб-службы из ActionScript 3.0 с использованием аутентификации NTLM. В adobe livedocs список NTLM-аутентификации поддерживается, но я не могу определить, куда передавать учетные данные пользователя.Пример проверки подлинности NTLM Flash ActionScript?

Спасибо, Peter

ответ

1

Я абсолютно уверен, что это напрямую не возможно за исключением использования Adobe AIR. Информация аутентификации в LiveDocs применима только к AIR (маленький символ рядом с именем метода означает это).

Из некоторого краткого описания о NTLM over HTTP похоже, что вам потребуется выполнить несколько запросов на основе кодов состояния HTTP, которые вы возвращаете с сервера. Это само по себе может быть проблематичным, так как Flash в лучшем случае является ошибочным с предоставлением этих кодов.

Кроме того, NTLM представляет собой схему на основе подключения и требует, чтобы вы поддерживали соединение между вторым и третьим запросами. Flash не может отправлять заголовок keep-alive и не может создавать постоянные соединения. Я склонен думать, что это исключает возможность того, что Flash делает аутентификацию NTLM изначально AS3.

Тем не менее, я не являюсь экспертом по NTLM и документом, который я привел, по-видимому, не является официальной версией спецификации NTLM по HTTP. Я не пойду так далеко, чтобы сказать, что аутентификация NTLM через Flash невозможна - она ​​просто выглядит независимо от того, что будет очень, очень тяжело.

0

Это возможно в ActionScript. Каждый запрос, который вы сделаете, будет оспорен сервером, запросив браузер для учетных данных NTLM. Затем Internet Explorer добавляет соответствующий заголовок авторизации. Затем сервер будет проверять учетные данные и либо обслуживать контент, либо запрещать доступ.

Поскольку все это выполняется без использования песочницы Flash Player, это то, что мы (разработчики в песочнице) не контролируем. Поэтому мы не можем использовать ActionScript для предварительного добавления заголовка авторизации NTLM перед тем, как сделать первоначальный запрос, который будет обходить фазу «запрос». То же самое верно и в Silverlight.