Как сделать единый вход (SSO) между двумя веб-приложениями, PHP и Java EE? - PullRequest
4 голосов
/ 27 сентября 2011

У меня есть существующее веб-приложение Java EE, работающее на GlassFish 3.1. Вход работает нормально через jdbcRealm, настроенный в GlassFish 3.1.

Кто-то в другой команде разрабатывает отдельное веб-приложение на PHP, босс не хочет, чтобы пользователь приложений дважды заходил в систему. То есть, когда они вошли в веб-приложение Java и щелкают ссылку, которая приводит их в приложение PHP, они также должны быть уже зарегистрированы в этом приложении. (И наоборот.)

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

Мне нужны указатели в правильном направлении.

1 Ответ

3 голосов
/ 27 сентября 2011

Вы сказали

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

Но, по сути, так работают сессии.

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

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

Если оба приложения будут находиться в другом корневом домене, тогда будет немного сложнее.

Что касается безопасности относительно передаваемого токена идентификатора, вы можете регенерировать идентификатор при каждом запросе, что защищает от взлома cookie.

...