Аутентификация Yadis без OpenID - PullRequest
1 голос
/ 17 января 2010

Мне нужна система аутентификации, которая бы работала в гармонии с текущей системой аутентификации, которую использует сервер моего клиента.

Текущая система работает следующим образом:

  • Страница, требующая аутентификации, вызывает собственный модуль Apache mod_auth, разработанный в файле .htaccess.

  • Пользователь перенаправлен на общую страницу входа в систему.

  • После ввода действительных учетных данных создается cookie, в котором хранятся IP-адрес клиента, открытый ключ и другая полезная информация о пользователе, все зашифровано base64.

  • Любая страница, требующая аутентификации после этой точки, проверяет открытый ключ и запрашивающий IP-адрес. Если IP-адрес пользователя изменился, они будут перенаправлены на экран входа в систему. Если файлы cookie изменены, они перенаправляются.

Преимущество вышеупомянутой системы заключается в том, что cookie не может использоваться на другом компьютере (кроме той же локальной сети, но другие меры проверяют защиту от атак «человек посередине»), так как IP-адрес не будет матч.

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

Это ограничение имеет смысл в большинстве случаев, так как оно не позволяет серверу "красть" куки пользователя. Однако это также означает, что веб-служба не может быть защищена с использованием одной и той же системы аутентификации, поскольку запросы всегда будут поступать с IP-адреса сервера, а не с клиента (если не используется AJAX, что является очень ограниченным использованием веб-службы) .

Мне бы хотелось, чтобы клиент веб-службы (на стороне сервера) передавал куки-файл на сервер веб-службы, а сервер веб-службы проверял подлинность куки-файла непосредственно с клиентом конечного пользователя.

Моя основа для этого заключается в том, как сайты, такие как Stackoveflow, используют Open ID для проверки состояния входа на уровне браузера без участия конечного пользователя, если проверка не завершилась неудачей.

Быстрый поиск в Википедии позволяет мне понять, что используемая система - это протокол, называемый Yadis.

Итак, я хотел бы знать, не хватает ли мне каких-либо частей этой головоломки и оставляю ли я себя открытым для серьезных недостатков безопасности:

  • Пользователь входит как обычно
  • Страница запросов пользователей нуждается в веб-сервисе
  • Страница передает куки-файл аутентификации пользователя веб-сервису
  • Веб-служба использует тот же файл cookie для запроса общей страницы подтверждения подлинности через браузер пользователя. (без просмотра пользователем).
  • Страница «Подтверждение аутентификации» возвращает сообщение «Пользователь вошел в систему» ​​или браузер открывает новое окно со страницей входа.
  • После получения вышеприведенного сообщения «все ясно» веб-служба возвращает любую информацию, запрошенную исходной страницей, на которой зарегистрирован пользователь.

Я что-то упустил? Yadis - это просто название, которое я дал этой идее, или мне нужно что-то установить, чтобы убедиться, что оно работает правильно?

1 Ответ

0 голосов
/ 22 января 2010

Термин «Yadis» может быть немного неясным, потому что он относится к разным вещам на протяжении многих лет, но больше всего он относится к фазе обнаружения протокола. Таким образом, он отвечает на этот вопрос: с учетом идентификатора (например, http://keturn.example.com/ или xri: // = keturn * пример или что-то еще), какой сервер аутентификации использовать для этого пользователя? Какую версию протокола он поддерживает?

Что, если я правильно прочитал вашу ситуацию, совсем не то, к чему вы пытаетесь обратиться.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...