Мне нужна система аутентификации, которая бы работала в гармонии с текущей системой аутентификации, которую использует сервер моего клиента.
Текущая система работает следующим образом:
Страница, требующая аутентификации, вызывает собственный модуль Apache mod_auth, разработанный в файле .htaccess
.
Пользователь перенаправлен на общую страницу входа в систему.
После ввода действительных учетных данных создается cookie, в котором хранятся IP-адрес клиента, открытый ключ и другая полезная информация о пользователе, все зашифровано base64.
Любая страница, требующая аутентификации после этой точки, проверяет открытый ключ и запрашивающий IP-адрес. Если IP-адрес пользователя изменился, они будут перенаправлены на экран входа в систему. Если файлы cookie изменены, они перенаправляются.
Преимущество вышеупомянутой системы заключается в том, что cookie не может использоваться на другом компьютере (кроме той же локальной сети, но другие меры проверяют защиту от атак «человек посередине»), так как IP-адрес не будет матч.
Недостатком является то, что этот метод предотвращает расширение сеанса пользователя на стороне сервера. Другими словами, серверный скрипт не может получить информацию от имени пользователя, поскольку IP-адрес не будет совпадать.
Это ограничение имеет смысл в большинстве случаев, так как оно не позволяет серверу "красть" куки пользователя. Однако это также означает, что веб-служба не может быть защищена с использованием одной и той же системы аутентификации, поскольку запросы всегда будут поступать с IP-адреса сервера, а не с клиента (если не используется AJAX, что является очень ограниченным использованием веб-службы) .
Мне бы хотелось, чтобы клиент веб-службы (на стороне сервера) передавал куки-файл на сервер веб-службы, а сервер веб-службы проверял подлинность куки-файла непосредственно с клиентом конечного пользователя.
Моя основа для этого заключается в том, как сайты, такие как Stackoveflow, используют Open ID для проверки состояния входа на уровне браузера без участия конечного пользователя, если проверка не завершилась неудачей.
Быстрый поиск в Википедии позволяет мне понять, что используемая система - это протокол, называемый Yadis.
Итак, я хотел бы знать, не хватает ли мне каких-либо частей этой головоломки и оставляю ли я себя открытым для серьезных недостатков безопасности:
- Пользователь входит как обычно
- Страница запросов пользователей нуждается в веб-сервисе
- Страница передает куки-файл аутентификации пользователя веб-сервису
- Веб-служба использует тот же файл cookie для запроса общей страницы подтверждения подлинности через браузер пользователя. (без просмотра пользователем).
- Страница «Подтверждение аутентификации» возвращает сообщение «Пользователь вошел в систему» или браузер открывает новое окно со страницей входа.
- После получения вышеприведенного сообщения «все ясно» веб-служба возвращает любую информацию, запрошенную исходной страницей, на которой зарегистрирован пользователь.
Я что-то упустил? Yadis - это просто название, которое я дал этой идее, или мне нужно что-то установить, чтобы убедиться, что оно работает правильно?