Распространить право доступа пользователя с веб-страницы аутентификации на другие веб-страницы только html на сервере?

Я хочу создать веб-страницу, которая будет служить для аутентификации пользователей на основе предоставленных им учетных данных (user1, pswd1 и т. д.).
Только после аутентификации пользователя у него должен быть доступ к нескольким другим веб-сайтам на разных папки веб-сервера, но не имеющие кода на стороне сервера
(иначе было бы просто.)
Пользователю должен быть разрешен доступ к другим сайтам, например. на основе его IP-адреса,
в течение 24 часов или другого периода, или пока в его браузере открыт сайт аутентификации.
Цель состоит в том, чтобы пользователю не нужно было вводить учетные данные на каждом сайте, а вводите его учетные данные только один раз или один раз в день.

Ограничения:

    Я вообще не хочу изменять код javascript целевого веб-сайта, например. для запроса веб-службы.
    Пользователю должен быть предоставлен доступ с помощью любого браузера, поэтому я предполагаю, что не могу использовать файлы cookie.

Если бы я разработал такой механизм на Apache, я мог бы, например, сделать так, чтобы PHP-код сайта аутентификации добавлял строку «Разрешить с ip» в файл htaccess каждой целевой веб-папки всякий раз, когда пользователь успешно аутентифицируется.

Проблема в том, что я не хочу его разрабатывать, так как уверен, что решение уже существует, а также мне нужен аналогичный механизм как для Apache, так и для node.js (хотя я могу жить с двумя разными решениями)


person Gil    schedule 14.12.2015    source источник


Ответы (2)


Какая информация нужна пользователю для идентификации себя? Как вы гарантируете, что пользователь является тем, за кого себя выдает?

Весь смысл аутентификации заключается в том, чтобы установить, что пользователь является тем, кем он себя называет, и это может создать сеанс, чтобы пользователям не нужно было повторно аутентифицироваться.

Если вы хотите, чтобы пользователь аутентифицировался в одном месте, а затем повторно использовал этот «сеанс» или набор учетных данных в другом месте, вам нужна федерация единого входа/идентификации.

Например, возьмем airbnb.com. Мне не нужно аутентифицироваться там. Все, что мне нужно сделать, это пройти аутентификацию со сторонней организацией, например. Гугл или фейсбук. По сути, SO работает точно так же.

Один из стандартов, лежащих в основе этой техники, называется Open ID Connect. Посмотрите на это. Если вы готовы потратить деньги, вы можете изучить коммерческие решения, например. Идентификация пинга. Существует реализация с открытым исходным кодом, предоставленная Mitre / MIT. Он доступен здесь.

person David Brossard    schedule 15.12.2015

На самом деле мне приходит в голову, что я могу использовать простую маршрутизацию.
В папке верхнего уровня есть php-код, который выполняет аутентификацию.
Если пользователь аутентифицирован, маршрутизируйте/перенаправляйте на запрошенный целевой сайт на основе запрошенный URL.
URL должен быть, например, http://mysite/site1, где код аутентификации в папке mysite, а site1 недоступен напрямую.
Возможно, я могу использовать что-то вроде php -express для повторного использования одного и того же php-кода в node.js.

person Gil    schedule 15.12.2015