Выберите один сайт, чтобы быть «главным», который обрабатывает все логины. Мы будем называть это одним сайтом A, а сайтом без авторизации B.
Когда пользователь использует форму входа в систему A, он должен установить cookie с некоторым уникальным идентификатором, таким как GUID. Пока этот файл cookie действителен, пользователь должен оставаться в системе.
Когда пользователь заходит на сайт B, сайт B должен установить cookie со своим собственным уникальным идентификатором (другой GUID), а затем перенаправить на логин на сайте A, передав уникальный идентификатор в строке запроса: Response.Redirect("http://siteA.com/login.aspx?id=ABCDEF")
Когда пользователь входит в форму на A, мы должны обновить базу данных сайта B - возможно, через веб-сервис - с помощью идентификатора пользователя и уникального идентификатора, который был передан - по существу, чтобы сайт B знал ", когда пользователь с ABCDEF в их cookie попадает на ваш сайт, это на самом деле User387 ".
Затем перенаправьте обратно на сайт B. Файл cookie предыдущего поколения все еще установлен, но сайт B теперь читает этот файл cookie и находит соответствующий идентификатор пользователя, поэтому он знает, кто этот пользователь, и разрешает доступ.
Когда пользователь попадает на сайт A, если он уже вошел в систему на сайте A, он распознает их cookie, выполняет те же действия, что и выше, и сразу же перенаправляет их.
Это очень простая версия того, что делает каждая служба единого входа. Пользователь будет отправлен на страницу входа A только один раз, независимо от того, откуда он (сайт A или B).