Web аутентификация с помощью hardware token?
Aladdin e-Token Java в форм-факторе смарт-карты.
Требует установки клиентских драйверов (eToken PKI Client).
Требует считывателя смарт-карт (в форм-факторе USB-токена удобнее работать (если нет встроенного считывателя например на ноутбуке), но меньше количество подключений, после которых расшатается либо гнездо либо разъем).
Поддерживает RSA-ключи в неизвлекаемом виде, т.е. вся криптообработка идет внутри чипа.
На серверной стороне - соответственно любое ПО, "понимающее" клиентские SSL-сертификаты с ключами RSA (на мой взгляд есть под любую платформу, в нашем проекте был Microsoft IIS)
Клиентский софт уже достаточно хорошо отлажен.
В-общем, рекомендую. Ни в коем случае не реклама. 
У RuToken тоже должен быть аналогичный продукт - они с Аладдином имеют полностью идентичные линейки, но я его в руках не держал. Они на выставке недавно, кстати, много говорили об интерфейсном плагине для всех веб-браузеров - можно посмотреть и в эту сторону.
Смартфон с приложением (начать лучше с Андроид). 
Генерация приватного ключа в смартфоне по коду (4-6 цифр) WEB-сессии (QR-код или ввод вручную).
Как сервер дал "добро" смарту (для отображения сообщения, что все ОК) - ставите флаг на сервере, что именно эта сессия авторизована и сертификат подтвержден.
AJAX на вебе автоматически покажет, что все ОК и можно работать уже авторизованно.
Закрыть сессию - можно либо со смарта, либо из веба дав команду "завершить сессию и выйти".