Аутентификация с ID-card

ID-карта это обычная пластиковая карточка с чипом, где хранятся личные сертификаты гражданина или постоянного жителя Эстонии.

Оффициальный сайт — id.ee. Есть два разработчика приложения - SK + ideelabor и RIA + Smartlink.

Установка

  1. Устройство для чтение карточки можно купить в SEB-банке за 95 EEK
  2. Устанавливаем утилиту
  3. Устанавливаем драйверы из IE, а для Firefox скачиваем и запускаем idCard\mozutils\mozilla-util.exe для установки в Firefox
  4. Если в Firefox по прежнему не получается работать, то надо
    • экспортировать из ID-card tool (Certificates / Save to file / Autentication certificate) сертификат авторизации в файл
    • импортировать его в Firefox (Tools / Options / Advanced / View certificates / Import)

ID-card login

Создать аутентификацию и авторизацию на своём сайте достаточно просто, но надо иметь https-поддержку, а это значит выделенный IP.

  1. Создаём .htaccess файл в папке для корня https, обычно это чтотот типа secure/htdocs/ со следующим содержимым:SSLVerifyClient Optional
    SSLVerifyDepth 3
  2. Ставим в эту же папку index.php.Теперь при переходе к этой папке в скрипте будет доступна переменная $GLOBALS["SSL_CLIENT_S_DN"].
  3. Проверяем кто выдал сертификат $GLOBALS["SSL_CLIENT_I_DN"] и ищем в БД соответсвующий личный код.

Баги

Если переход делать с post-методом (через submit формы), то я заметил странное поведение - сертификаты спрашиваются, но до php ничего не доходит. Надо делать всё через get.

OpenID

Введение

OpenID это логика разделения аутентификации (authentication), которая в свою очередь отвечает за то, что-бы пользователь был в действительности тем за кого он себя выдаёт. В качестве методов authentication можно выделить пароль, сертификат, биометрические данные.

После распознавания с кем идёт дело, вступает в игру процесс правообладания (authorization), который даёт всем знать какие права у пользователя имеются.

Возможности Open ID

Оставляя комментарий на малоизвестном вам сайте, достаточно ввести адресс своего блога, где вы аутентифицированы и вы, как по волшебству, получите положительный результат. В чём состоит техническая задача OpenID?

Crontab

Cron или crontab - UNIX демон, периодически вызывающий некоторую комманду. Обычно доступ к его настройкам поставляется на хостингах в контрольной панели, либо через прямой доступ по ssh. Cron хранит таблицу настроек вида

минута
час деньмесяц день недели комманда

 

Благодаря этой программе можно разрабатывать эффективные приложения на php практически с неограниченным временем исполнения, благодаря постоянному вызову этого файла. Вызывать можно либо через UNIX утилиту wget, либо напрямую из php:

* * * * * /usr/local/bin/wget -q -O /dev/null http://some_great_site.net/auto.php

Вариации

Если у нас маленький сайт/домашняя страница, где надёжность не настолько важна как в банковских системах, то можно использовать публичный ресурс WebCron.org

Если система - десктоп с Windows, то можно использовать удобно прячущуюся в tray, программку nnCron .

Загрузка файлов через flash-объект c javascript общением

Загрузка файла в теории дело достаточно простое. Создаём форму вида

<form enctype="multipart/form-data" action="uploader.php" method="post">
<input type='file' name='uploadedfile' />
<input type='submit' />
</form>

После загрузки на серверной части можно использовать глобальную переменную $_FILES. Файл сервером перемещается во временную папку типа /var/temp/, откуда его можно передвинуть в нужную нам папку:

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path))
echo "The file ". basename( $_FILES['uploadedfile']['name'])." has been uploaded";
else
echo "There was an error uploading the file, please try again!";