Совместное использование аутентификации между сайтами ASP.NET - PullRequest
1 голос
/ 29 мая 2009

У меня есть два сайта ASP.NET (они не могут работать в одном процессе), и мне нужно разделить аутентификацию между ними. Если пользователь на сайте A уже прошел проверку подлинности и затем переходит на сайт B, мне нужен способ поделиться этой информацией с сайтом B, чтобы у пользователя не было запроса на повторную проверку подлинности. То же самое верно в обоих направлениях. Как вы делитесь этой информацией?

Ответы [ 4 ]

4 голосов
/ 29 мая 2009

Они в одном домене?

Если у вас есть app1.blah.com и app2.blah.com, это очень легко сделать. Просто установите для домена и имени одно и то же значение в разделе формы в web.config:

<authentication mode="Forms">
      <forms loginUrl="login.aspx"
        name=".COOKIENAME" 
        protection="All"  
        path="/" 
        domain="blah.com" 
        timeout="30" />
    </authentication>

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

2 голосов
/ 28 августа 2009

Если вы используете проверку подлинности с помощью форм, вы можете сделать это, установив ключ машины.

См .: Аутентификация с помощью форм в приложениях

2 голосов
/ 29 мая 2009

Выберите один сайт, чтобы быть «главным», который обрабатывает все логины. Мы будем называть это одним сайтом 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).

0 голосов
/ 29 мая 2009

Проверьте Служба аутентификации связи Windows . Не совсем обработать единый вход, как вы хотите, но он должен по крайней мере позволить людям входить через доску с одинаковыми учетными данными.

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