WebMoney

Принцип работы

Основы

В основе принципа работы сервиса лежит понятие о временном (сессионном) пароле, он действителен лишь во время существования сессии пользователя. В рамках сервиса будем его называть авторизационным тикетом.

Сервис всякий раз выдает пользователю авторизационный тикет, когда пользователь авторизуется на тот или иной сайт, и отправляет тикет и другие параметры на страницу запросившую авторизацию. Страница, получившая информацию о пользователе, проверяет тикет и выполняет необходимые действия.

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

Сценарий аутентификации

  1. Держатель сайта направляет пользователя на страницу авторизации WebMoney Login. Эта страница имеет URL вида https://login.wmtransfer.com/GateKeeper.aspx?RID=RID, где RID - это ID URL возврата, сохраненный в настройках WM Login для сайта, на который будут переданы авторизационный тикет, WMID пользователя, способ и параметры аутентификации и RID.
  2. Пользователь выбирает метод аутентификации и проходит её.
  3. Далее система перенаправляет пользователя на url ассоциированный с RID. Туда же также передаются авторизационный тикет, WMID пользователя, способ аутентификации и RID.
  4. Получателю нужно обязательно проверить корректность переданных данных, что требует серверного скрипта на странице возврата, который проверит правильность переданных данных (WMID, тикета и т.п). Для того чтобы проверить правильность авторизационного тикета следует вызвать веб-сервис.

Сайты

Сайт имеет одно общее имя, которое задается в настройках для одного WMID (интернет-проекта).

Для одного WMID (интернет-проекта) задаются единые настройки (Допустимые типы WM Keeper, проверки IP, срок жизни тикета и т.п).

Допускается любое количество URL для одного WMID (даже относящихся к разным доменам, например, https://site.ru/enter.aspx, https://site.com/welcome/ и т.д.) Для каждого URL создается уникальный RID.

Тикеты

Тикет - это уникальный сессионный ключ, состоящий из символов и удовлетворяющий регулярному выражению [a-zA-Z0-9$!]{48}

Авторизационный тикет имеет срок действия, который задается в настройках для сайта (в минутах).

Если тикет просрочен, то веб-сервис вернёт retval=3. В этом случае необходимо считать тикет недостоверным и отправить пользователя на повторную авторизацию.

Cрок действия продлевается при вызове соответствующих методов интерфейса его проверки, в которых обновляется время последнего обращения к тикету.

Когда пользователь авторизуется на том же сайте, для которого он ранее уже получил тикет, то успешное создание нового тикета автоматически закрывает тикет ранее выписанный для этого пользователя на этом сайте.

Авторизационный тикет может быть закрыт принудительно, через вызов метода TicketKill или первой версией: KillTicket защищенного сервиса безопасности.