2015-02-25 2 views
0

Мне интересно, возможно ли (и как) сделать некоторые вызовы API Win32 из веб-браузера с помощью JavaScript. Мое нынешнее понимание этого вопроса приводит меня к выводу, что мне потребуется какой-то элемент управления ActiveX, который затем можно будет использовать для быстрого выполнения необходимых вызовов. Однако показания статей в Интернете предупреждают меня, что использование ActiveX не будет решением для кросс-браузера. Теперь я не хочу заставить своих пользователей использовать только IE, который, насколько я понимаю, единственный браузер, который поддерживает ActiveX. Я хочу, чтобы эта функция была доступна только пользователям Windows.Выполнение вызовов API API из веб-браузера?

То, что я хочу, это получить в настоящее время зарегистрированного пользователя и его идентификатор безопасности и отправить эту информацию в веб-приложение, которое будет обрабатывать эти данные, хранить их в базе данных и т. Д. Кроме того, мне, вероятно, потребуются некоторые вызовы для доступа к аппаратным шифрованием устройства, подключенные к клиентскому компьютеру (например, USB-токен с сертификатом).

Как это получить? Нужно ли писать отдельный плагин для каждого веб-браузера? Было бы предпочтительнее, если бы все это можно было сделать с помощью C#, но родной C++ не странно для меня, так что, если первое невозможно, я могу вернуться к последнему.

+0

Зачем вам нужен SID пользователя? Это не очень портативно. Что касается имени пользователя для входа в систему, как насчет проверки подлинности NTLM в вашем веб-приложении? –

+0

@RemyLebe Идея заключалась в создании единой системы входа, которая работает с входом в Windows. Вы входите в Windows, открываете веб-сайт, сайт узнает вас по вашим входам в Windows и voila, вы аутентифицированы. Я не хочу ограничивать эту функциональность только AD, поэтому я требую специального решения. –

+0

@RemyLebeo также, это интернет-приложение, я не думаю, что NTLM является жизнеспособным вариантом здесь. –

ответ

1

То, о чем вы просите, НЕ возможно без плагина, специфичного для браузера, который запускается на самой клиентской машине (что делает элемент управления ActiveX).

ActiveX - это в первую очередь технология InternetExplorer, однако в прошлом были плагины для добавления поддержки ActiveX в другие браузеры. Не уверен, что кто-то из них выжил со временем. Но в любом случае, ActiveX - это технология только для Windows, поэтому она не будет работать на других платформах.

Нынешняя тенденция в технологии браузера заключается в том, чтобы как можно больше попытаться перемещать AWAY из плагинов, опираясь на функции, встроенные в HTML5 и сами JavaScript.

AFAIK, единственное решение, кросс-браузер, я могу думать, использует подписанный Java-апплет для загрузки DLL через JNI:

Load .DLL with applet and use it on client

Однако, Java-апплеты не очень популярны больше вместо Flash и HTML5, и даже некоторые браузеры теперь отключают Java по умолчанию. Поэтому я не думаю, что это очень жизнеспособное решение, если вы пытаетесь настроить таргетинг на широкую аудиторию. Но для изолированной аудитории это может быть жизнеспособным вариантом.

+0

Что делать, если я использовал, скажем, подписанный Java-апплет, который я бы использовал для вызова экспорта из некоторой DLL, созданной на C++, которая может дать мне информацию, которую я хочу? Разве это не совместимо с кросс-браузером? –

+0

http://stackoverflow.com/questions/12154013/load-dll-with-applet-and-use-it-on-client –

+0

Это похоже на кросс-браузерное решение, которое, несомненно, ответит на мой вопрос. Пожалуйста, добавьте описание в качестве ответа, чтобы я мог отметить его. –