2015-01-20 2 views
2

У меня есть стороннее веб-приложение PHP (ELGG), которое я хотел бы расширить с помощью приложения Node.js. Пользователи аутентифицируются в приложении PHP, проверяя предоставленные им учетные данные в отношении базы данных MySQL.Защитите приложение Node.js, интегрированное с приложением PHP

Как я могу защитить доступ к приложению Node.js, не переписывая код аутентификации в узле? Есть ли способ разрешить пользователям доступ к приложению Node.js, только если они вошли в приложение PHP?

ответ

0

В общем, вы должны сделать приложение Node.js веб-службой, сделать его доступным локально и не публично, а затем написать PHP-код, который выполняет аутентификацию, а затем вызывает API, предоставляемый Node.js, а затем создает ответ для пользователь использует эти данные.

+1

Я использую Node.js с socket.io для обеспечения взаимодействия в режиме реального времени с пользователями, поэтому я не хочу, чтобы PHP-код вызывал узел, я хочу, чтобы браузер пользователя вызывал узел через сокеты, поэтому приложение Node.js должно быть общедоступным. .. –

1

Use PHP and Node with a shared DB for confirming session Вы можете использовать DB или какой-либо другой общий репозиторий для хранения пользователей идентификатор сеанса, который узел может проверить, чтобы убедиться, что пользователь вошел в систему.

+0

клиент будет хранить идентификатор сеанса в cookie правильно? затем отправил службу запроса с этим (сохраненный идентификатор сеанса) – DeLe

1

Я думаю, что лучший способ приблизиться было бы PHP и приложения Node работают как субдомены одного и того же корневого домена, а затем проверьте приложение Node для файла cookie PHP-приложения. Это позволило бы избежать дополнительного вызова базы данных в ответе Ирвина.

Как только пользователь входит в приложение PHP, для phpapp.mydomain.com (* .mydomain.com) создается Cookie с токеном аутентификации. Приложение Node, размещенное на узле nodeapp.mydomain.com, может получить доступ к токенам cookie cookie, созданным на phpapp.mydomain.com.

0

Я написал плагин Elgg, который обеспечивает функциональность доступа к серверу node.js для websocket. Вы можете проверить код здесь: elgg-nodejs

Я просто разобрать печенье, чтобы получить сеанс пользователя:

getElggSession = function(socket) { 
    return socket.handshake.headers.cookie.match(/Elgg=(\S*);?/)[1]; 
}; 

Может быть, это не самый лучший способ для безопасности ...

Смежные вопросы