Рутокен Web для сайта ASP.NET 4.0

Здравствуйте!
Нашей командой разрабатывается веб сервис на asp.net 4.0 (без MVC).
Язык программирования C#.
Для аутентификации планируется использовать Rutoken Web.
C этой целью было приобретено несколько ключей для разработки и отладки.
Но разработка проекта сейчас полностью застопорилась в связи с отсутствием документации по использованию ключей в современных ASP NET сайтах. Предлагаемые для скачивания файлы написаны для классического ASP, который уже лет десять не используется в новых разработках. В нашем коллективе нет разработчиков "старой закалки", знающих классический ASP и язык VB NET, поэтому использовать исходники с пользой для дела пока не можем.
Найти в интернете примеры внедрения ключа для проектов ASP.NET 2.0 и выше пока тоже не удалось.

Будем рады любой помощи в сложившейся ситуации.
Спасибо!

Re: Рутокен Web для сайта ASP.NET 4.0

Имхо, самое сложное в этой истории - реализация проверки подписи. Для этого можно использовать либо криптопровайдер, поддерживающий ГОСТ (КриптоПро и т.п.), либо какую-нибудь библиотеку, реализующую проверку подписи ГОСТ (OpenSSL от Криптокома, например).
В остальном у опытных веб-программистов сложностей не должно возникнуть вообще.

Re: Рутокен Web для сайта ASP.NET 4.0

У нас аналогичная сложившаяся ситуация. Разрабатываем для ASP.NET 4.0 IIS7. Примеры, выложенные для класического ASP 1.0, не подходят по определению. Собирается ли компания "Актив" предоставить пользователям примеры для современных версий ASP.NET и исходные коды серверной части для IIS?

Stanislav пишет:

Здравствуйте!
Нашей командой разрабатывается веб сервис на asp.net 4.0 (без MVC).
Язык программирования C#.
Для аутентификации планируется использовать Rutoken Web.
C этой целью было приобретено несколько ключей для разработки и отладки.
Но разработка проекта сейчас полностью застопорилась в связи с отсутствием документации по использованию ключей в современных ASP NET сайтах. Предлагаемые для скачивания файлы написаны для классического ASP, который уже лет десять не используется в новых разработках. В нашем коллективе нет разработчиков "старой закалки", знающих классический ASP и язык VB NET, поэтому использовать исходники с пользой для дела пока не можем.
Найти в интернете примеры внедрения ключа для проектов ASP.NET 2.0 и выше пока тоже не удалось.

Будем рады любой помощи в сложившейся ситуации.
Спасибо!

Re: Рутокен Web для сайта ASP.NET 4.0

Пример для ASP.NET 4.0 уже находится в разработке и в ближайшее время будет выпущен.

Re: Рутокен Web для сайта ASP.NET 4.0

Vladimir Ivanov пишет:

Пример для ASP.NET 4.0 уже находится в разработке и в ближайшее время будет выпущен.

Спасибо, Владимир, пример для ASP.NET 4.0 действительно рабочий.

После изучения возник ряд вопросов по поводу этого примера:

1. Для аутентификации пользователя, использующего ключ, в примере используется контрол aktivlogin:Login (на странице ~/default.aspx):

<%@ Register TagPrefix="aktivlogin" Namespace="RutokenWeb.Integration" Assembly="RutokenWeb" %>
<aktivlogin:Login ID="tokenlogin" runat="server" SuccessUrl="Admin/" LoginType="Login">
  <Template>
    <asp:DropDownList ID="rtwUsers" runat="server" />
    <asp:Label ID="rtwErrorMessage" runat="server" CssClass="rutoken error" style="display: block; color: #c00;" />
    <asp:Label ID="rtwMessage" runat="server" CssClass="rutoken message" style="display: block; color: green;" />
    <asp:Button ID="rtwLogin" runat="server" OnClientClick="return false;" Text="Войти" style="margin-top:12px;" />
    <asp:Image ID="rtwAjaxImg" runat="server" ImageUrl="/ajax_loader.gif" />
  </Template>                   
</aktivlogin:Login>

В коде же производится создание экземпляра класса CustomTokenProcessor, наследника от ITokenProcessor:

tokenlogin.TokenProcessor = new CustomTokenProcessor();

В разрабатываемом нами сайте аутентификация никак не завязана на использование контрола Login.

Вопрос такой: можно было бы получить от Вас исходные коды этого контрола, чтобы можно было самостоятельно манипулировать действиями по аутентификации, получаемыми ошибками и т.д. Наше приложение будет многоязычным и поэтому необходимо выводить локализированные сообщения об ошибках. Для этого необходимо иметь доступ к возвращаемым ошибкам.

2. Аналогичный вопрос относительно контрола aktivlogin:Login на странице ~/repair.aspx. Можно было бы получить от Вас исходные коды этого контрола?

3. Аналогичный вопрос относительно контрола token:Administration на странице ~/Admin/default.aspx. Можно было бы получить от Вас исходные коды этого контрола?

4. Не совсем понятно как связана аутентификация с помощью ключа с аутентификацией формами и вообще есть ли связь между ними?

Заранее благодарен за ответы.

Re: Рутокен Web для сайта ASP.NET 4.0

to Eugene Vasylyev
Контрол разработан для ASP.NET Web Forms.
В шаблоне контрола используются стандартные контролы, а также события жизненного цикла страницы для перехвата ajax запросов.
Событийный механизм WebForms не используется.
Аутентификация с помощью ключа с аутентификацией формами не связана.

Аутентификация работает так:
Задача контрола сводится к проверке правильности подписи. Если все верно - дергается метод AuthenticateUser интерфейса ITokenProcessor. То-есть задача метода не проверка, а непосредственно установка пользователю статуса "Аутентифицирован". Контрол ожидает от метода true в случае успешной установки статуса, false в случае неудачи или Exception опять же в случае неудачи, но в этом случае пользователь получает еще и exception.Message. Это к вопросу о локализации - можно дергать строки из ресурсов, по известному message.
В примере метод реализован просто - FormsAuthentication.SetAuthCookie(login, false); Но это только пример.
Метод вынесен в интерфейс как раз для кастомной реализации. Здесь и нужно реализовать вашу логику установки пользователя как аутентифицированного.

Re: Рутокен Web для сайта ASP.NET 4.0

to Arkadiy Vasilyev

Аркадий, спасибо за Ваш ответ. Можно тогда сразу задать пару вопросов:

1. Откуда можно получить доступ к следующим строкам, присутствующим в контролах aktivlogin:Login, и token:Administration:
- USB-токен не найден. Подключите токен.
- Вы не можете зайти по токену. Попробуйте активировать его в личном кабинете
- прочие, появляющиеся в информационной строке

2. Откуда можно получить доступ к фразам во всплывающем окне запроса пин-кода:
- Ввод пин-кода. Введите пин-код.

Re: Рутокен Web для сайта ASP.NET 4.0

1. Откуда можно получить доступ к следующим строкам, присутствующим в контролах aktivlogin:Login, и token:Administration:
- USB-токен не найден. Подключите токен.
- Вы не можете зайти по токену. Попробуйте активировать его в личном кабинете
- прочие, появляющиеся в информационной строке

В текущей версии все строковые ресурсы - в коде. Планируется поддержка работы с ресурсными файлами resx.

2. Откуда можно получить доступ к фразам во всплывающем окне запроса пин-кода:
- Ввод пин-кода. Введите пин-код.

Содержимое всплывающих окон формируется плагином для браузера. Фактически - на стороне клиента. По соображениям безопасности управление текстом в таких окнах отсутствует. Иначе можно создать ситуацию запроса пин-кода для нежелательного действия.

(2011-12-13 18:42:30 отредактировано Eugene Vasylyev)

Re: Рутокен Web для сайта ASP.NET 4.0

to Arkadiy Vasilyev

Аркадий, спасибо за Ваш ответ, но в таком случае Вы могли бы указать в коде какого конкретно файла находятся указанные фразы (сообщаю заранее: я не нашел)?

Относительно содержимого всплывающих окон - получается, что мы пока что не имеем возможности использовать ключи Рутокен Web для англоязычного сайта, т.к. русскоязычную фразу "Ввод пин-кода. Введите пин-код." пользователи, не знающие русского языка, вряд ли поймут?

Re: Рутокен Web для сайта ASP.NET 4.0

Аркадий, спасибо за Ваш ответ, но в таком случае Вы могли бы указать в коде какого конкретно файла находятся указанные фразы (сообщаю заранее: я не нашел)?

В сборку включен javascript файл tokenadmin.js (WebResource embedded). В нем и находятся указанные фразы, причем unicode символы представлены в формате \uxxxx. Видимо по этому не нашли. Планируемая на следующую версию локализация включит и все фразы из данного файла.

Относительно содержимого всплывающих окон - получается, что мы пока что не имеем возможности использовать ключи Рутокен Web для англоязычного сайта, т.к. русскоязычную фразу "Ввод пин-кода. Введите пин-код." пользователи, не знающие русского языка, вряд ли поймут?

Локализация плагина для браузера также в планах разработки.

Re: Рутокен Web для сайта ASP.NET 4.0

to Arkadiy Vasilyev

Аркадий, спасибо за Ваш ответ. На самом деле в имеющихся у меня исходниках файл tokenadmin.js отсутствует. Попробую скачать у Вас снова исходники, посмотрю там.

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

Re: Рутокен Web для сайта ASP.NET 4.0

Аркадий, спасибо за Ваш ответ. На самом деле в имеющихся у меня исходниках файл tokenadmin.js отсутствует. Попробую скачать у Вас снова исходники, посмотрю там.

Файл со скриптами включен непосредственно в сборку, WebResource embedded, как уже писал.

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

В случае самостоятельного формирования фраз на стороне клиента, а получение известного списка фраз это как раз такой случай, может возникнуть ситуация, когда текст в окне не соответствует фактическому действию с пин-кодом. Об этом так же упоминалось ранее. Когда будет окончательное решение по методике локализации браузерного плагина, сообщим обязательно.

Re: Рутокен Web для сайта ASP.NET 4.0

to Arkadiy Vasilyev

Аркадий, спасибо за Ваш ответ. Все таки хотелось бы понять главное - есть ли сейчас возможность использовать ключ Rutoken Web для сайтов с нерусских языком? Или нет? Задача стоит использовать ключ Rutoken Web для аутентификации пользователей (вместо традиционных логина/пароля) на сайте, где будет постоянно увеличиваться количество поддерживаемых языков. Пожалуйста, уточните. Если Вы планируете локализацию браузерного плагина - Вы могли бы сообщить какие-либо сроки этого процесса?

Re: Рутокен Web для сайта ASP.NET 4.0

Серверный плагин с локализацией доступен для загрузки. В архиве пример сайта, скрипты для базы и новый док.
https://download.rutoken.ru/Rutoken_Web … TW_PHP.zip