Я сделал это один раз, и это было между сайтом PHP и сайтом ASP.NET (я являюсь разработчиком ASP.NET, но тоже немного разбираюсь в PHP).
Если App1 является точкой входа для пользователя (ей), то при входе в систему App1 должен создать для этого пользователя пару ключ-значение, которая состоит из имени пользователя и сгенерированного ключа (например, GUID). Программно он должен связаться с App2 и отправить этот ключ (например, запустить фоновый поток). Допустим, пользователь JohnDoe успешно входит в систему в App1.
App1 генерирует ключ (3l3kjlk3j4lkj34, JohnDoe) и отправляет его в App2 через какое-либо соединение (например, через HTTP-запрос через URL-адрес, например www.app2.com/SetTempKey.aspx?userId=JohnDoe&key=3l3kjlk3j4lkj34 - страница aj это позволило бы только запросы от определенного IP-адреса в целях безопасности).
Приложение 2 получит временный ключ доступа и сохранит его. Допустим, у App2 есть страница входа в систему по адресу www.app2.com/login.aspx.
.
В приложении 1 вы создадите ссылку на www.app2.com/login.aspx?tempKey=3l3kjlk3j4lkj34 с приличным ярлыком, например «Перейти к нашему приложению 2». Когда пользователь щелкает ссылку, вызывается страница login.aspx в app2. Проверка строки запроса на наличие параметра строки запроса tempKey, а затем проверка правильности ключа во временных ключах, сохраненных app2, обнаруживает, что REALLY - это JohnDoe.
App2 регистрирует его, просто вызывая FormsAuthentication.RedirectFromLoginPage («JohnDoe», true) (сначала имя пользователя, а затем, если cookie FormsAuth должен быть постоянным / not_session_lived).
... и это почти всё.