2015-12-27 5 views
4

У меня есть небольшой вопрос о возможностях изменить аутентификацию на моем сервере C# из сеанса Login \ Password на PHP. Я использую PHP, HTML5 и JavaScript в качестве клиентской части, а сервер C# с WebSockets lib - как сервер. У меня уже есть код авторизации, но он работает только с логином и паролем.Аутентификация сервера через сеанс PHP

Ну, у меня есть тот же код аутентификации, который проверяет логин & пароль через PHP. Но как я могу авторизовать клиента на сервере C#, используя WebSockets с сеансом PHP, вместо этого зарегистрируйтесь в учетной записи & пароль?

Маленький рис:

Возможно ли это? И какой-нибудь фрагмент кода, демо и т. Д.?

+1

Вы можете сгенерировать токен в php, например 'md5 (time()), сохранить его в базе данных и прочитать токен из базы данных на C#, тогда вы можете сохранить все сохраненные в сеансе в базе данных. то вы можете сохранить токен в файле cookie или в localStorage. У вас будет свой собственный сеансовый механизм. – jcubic

ответ

2

Создайте токен доступа, который может подтвердить ваш сервер C#. Это, как я бы реализовать:

доля секрет между PHP и # сервера C (например, 64 randcom байт)

Когда PHP проверяет пользователя/логин, генерировать маркер: он содержит случайные символы, пользователь ID и подпись, которая была создана с использованием общего секрета. Например. что-то вроде этого:

$random = base64_encode(mcrypt_create_iv(32)); 
$token = $random . '_' . $userID . '_' . hash_hmac('sha256', $random . '_' . $userID, SHARED_SECRET); 

C# сервер может проверить этот токен calcuating подписи HMAC от $ случайны и $ лексем с общим секретом. Если это правильно, сервер C# может работать с $ userID и базой данных MySQL.

До тех пор, пока вы передаете токен вашему JS-коду через https, вы должны быть в безопасности.

P.S .: Вы можете улучшить безопасность этой схемы, добавив дату истечения срока действия к токену и сделать свой код JS новым маркером вовремя. Не забудьте указать срок действия подписи.

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