Безопасный MediaWiki из общедоступного доступа Аутентификация сервера Windows ASP на Linux PHP - PullRequest
0 голосов
/ 20 мая 2011

У нас есть веб-приложение, которое работает на сервере IIS6 ASP.Net.Вы должны войти в систему, чтобы использовать программное обеспечение.В основном, когда вы входите в систему, создается файл cookie, а затем, когда вы посещаете последующие страницы, они проверяют этот файл cookie;если его там нет, вы будете перенаправлены на страницу входа.

Мы хотим реализовать сервер MediaWiki с использованием Linux / PHP (LAMP), чтобы предоставить нашим пользователям раздел справки в формате «wiki».Однако мы хотим разрешить доступ только тем людям, которые вошли в программное обеспечение.

Итак, у нас есть software.company.com (сервер Windows / IIS6 / ASP.NET), в который вы входите и переходите к нашей справке.который перенаправляет вас на kb.company.com (сервер Linux / Apache / PHP).

Я думаю о том, чтобы использовать такую ​​же проверку «cookie» на сервере Linux, но я не уверен, как заставить окно Windows IIS передавать токен или что-то на сервер Linux, говоря «эйэтот пользователь вошел в систему, поэтому сгенерируйте для него куки ".

Кто-нибудь делает что-нибудь подобное?Возможно, я полностью скучаю по лодке в своих мыслях ...

1 Ответ

1 голос
/ 22 мая 2011

Проблема здесь в том, как сообщить сайту kb.company.com, что входящий пользователь подлинно аутентифицирован и вошел в систему support.company.com.

У нас очень похожая настройка. У нас есть портал для реселлеров и частный вики-сайт базы знаний.

Чтобы перенести пользователей на вики-сайт, у нас есть специальная ссылка, которая запрашивает страницу на support.company.com, которая генерирует большой объем данных и ключ сеанса (например, guid или два), которые сохраняются для передачи сеанса. "таблица базы данных, доступная для обоих сайтов.

Затем Response.Redirect() пользователь попадает на вики-сайт с этим ключом, например:

http://kb.company.com/DoLogin.aspx?session=E97DDE8D-1C57-4450-ABE4-72E2054A1C82

В вики (мы немного изменили вики ScrewTurn) мы включили проверку подлинности с помощью форм и запретили доступ анонимным пользователям. DoLogin.aspx извлекает значение session из строки запроса и затем ищет запись, сохраненную в таблице «перенос сеанса». Если есть совпадение, мы аутентифицируем пользователя и удаляем запись переноса сеанса.

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

Вместо того, чтобы передавать значение ключа сеанса через строку запроса, вы можете передать его через cookie, где домен cookie установлен в company.com:

HttpCookie cookie = new HttpCookie("session", "<guid>");
cookie.Domain = "company.com";

Дальнейшие украшения заключаются в том, чтобы зашифровать значение cookie, выполнить некоторое хеширование и проверить его на другую сторону передачи. Однако контент в нашей вики не очень ценен (ни один из них не может быть изменен конечным пользователем), мы просто хотели не пускать случайных прохожих, и это прекрасно работает для нас.

...