Безопасно перенести пользователя из одного приложения ASP .NET в другое - PullRequest
5 голосов
/ 24 апреля 2009

У меня есть веб-приложение ASP .NET, которое использует проверку подлинности с помощью форм. Давайте назовем это приложение «Фу». Я создаю другое приложение ASP .NET под названием «Bar».

Я хочу, чтобы пользователь зашел в Foo, а затем щелкнул ссылку, которая перенаправила его на страницу в приложении Bar. Приложение Bar не должно требовать от пользователя Foo повторного входа в систему. Приложение Foo должно передать защитный билет в приложение Bar, а затем пользователь может заняться своими делами в приложении Bar.

Я также хочу ограничить доступ к приложению Bar. Поэтому, если пользователь пытается получить доступ к приложению Bar без первого входа в систему, он перенаправляется на страницу входа в Foo.

Возможно ли это? Если да, то как мне это реализовать?

1 Ответ

2 голосов
/ 24 апреля 2009

Я сделал это один раз, и это было между сайтом 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).

... и это почти всё.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...