Система единого входа для веб-сайтов DNN

Мое требование таково:

У меня есть сайт DNN www.websiteA.com.

Я хочу построить www.websiteB.com и www.websiteC.com на одной и той же установке DNN. www.websiteB.com и www.websiteC.com должны позволять пользователям www.websiteA.com входить в систему с одним и тем же именем пользователя и паролем.

Когда пользователь входит на www.websiteA.com, а затем переходит на www.websiteB.com или www.websiteC.com, ему не нужно снова входить в систему, поскольку он уже авторизовался на основном веб-сайте.

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

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

Может ли кто-нибудь дать мне больше указаний в этом вопросе? Спасибо!


person Apeksha    schedule 04.09.2015    source источник
comment
Вы можете посмотреть платные версии DNN.   -  person Chris Hammond    schedule 04.09.2015
comment
Спасибо @ChrisHammond. Я читал, что Evoq предоставляет SSO с использованием Active Directory. Если это так, то это не соответствует нашим требованиям. Вы не знаете, может ли он работать без AD?   -  person Apeksha    schedule 05.09.2015
comment
@ChrisHammond Я изучил это подробнее и обнаружил, что в платных версиях DNN есть функция для создания групп сайтов, которая позволит совместно использовать пользователей, позволяя пользователям основного веб-сайта входить на дочерние веб-сайты с теми же учетными данными. Что я ищу, так это то, что пользователям не нужно входить на дочерние веб-сайты после входа в мастер. Я не могу найти окончательный ответ о том, поддерживается ли это или нет. Не могли бы вы помочь?   -  person Apeksha    schedule 05.09.2015
comment
К сожалению, для этого вам нужно выяснить, как заставить все сайты совместно использовать файл cookie. Если вы делаете это с поддоменами, все из одного и того же домена верхнего уровня, это не так уж сложно, в противном случае я не знаю, как это сделать.   -  person Chris Hammond    schedule 05.09.2015


Ответы (2)


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

Итак, вот как я настраиваю псевдонимы портала:

  • веб-сайтA = портал 0, псевдоним веб-сайтA.com (основной)
  • веб-сайтB = портал 1, псевдоним веб-сайта A.com/b (основной) и псевдоним веб-сайта B.com, псевдоним перенаправления
  • веб-сайт C = портал 2, псевдоним веб-сайта A.com/c (основной) и псевдоним веб-сайта C.com, псевдоним перенаправления

Пользовательский интерфейс Site Groups для управления группами — это функция Evoq, но серверная часть — это основная структура платформы.

Вот как вы могли бы настроить его без пользовательского интерфейса в сообществе DNN:

Создайте запись в таблице PortalGroups: MasterPortalID = 0, PortalGroupName = 'WebsiteA Group', AuthenticationDomain = 'websiteA.com'

Теперь обновите поле PortalGroupID в таблице Portals:

  • ГДЕ PortalID = 0, УСТАНОВИТЕ PortalGroupID = -1
  • ГДЕ PortalID = 1, SET PortalGroupID = 1 (при условии, что новый добавленный вами PortalGroupID равен 1)
  • ГДЕ PortalID = 2, УСТАНОВИТЕ PortalGroupID = 1
person DotNetNuclear    schedule 05.09.2015

Вы также можете написать свой собственный провайдер аутентификации DNN (http://www.dnnsoftware.com/community-blog/cid/134678/dotnetnuke-tips-and-tricks-12-создание-своего-собственного-поставщика-аутентификации ).

Затем просто попросите поставщика проверки подлинности проверить файл cookie проверки подлинности в системе пользователя. Если файл cookie действителен (и срок его действия не истек), вы можете автоматически выполнить вход в систему. В противном случае перенаправьте их на главный экран входа в систему. Я сделал это, но на другом сайте была панель инструментов на основе Java.

person L_7337    schedule 10.09.2015
comment
Как проверить аутентификационный файл cookie, принадлежащий другому домену? Я думал, что это не разрешено. Извините, если я упустил что-то очевидное. - person Apeksha; 10.09.2015
comment
Может быть, я неправильно выразился. Я только что создал файл cookie общего назначения и использовал его для аутентификации. - person L_7337; 10.09.2015
comment
Спасибо, теперь я понимаю. Это подводит меня к вопросу - мне нужно будет прочитать этот файл cookie, как только веб-сайт загрузится. Пользовательский поставщик аутентификации будет только на странице входа. Итак, чтобы автоматически войти в систему, пользователь должен перейти на страницу входа? Не могли бы вы подробнее рассказать о том, как работает ваше решение? Большое спасибо за ваш вклад! - person Apeksha; 10.09.2015
comment
Кроме того, когда пользователь вошел в систему, он создал токен в таблице с датой истечения срока действия. Это то, что было использовано, чтобы убедиться, что они не остаются в системе постоянно. Модуль будет обновлять срок действия токена в базе данных. Я также описал это в этом вопросе: "> stackoverflow.com/questions/18621303/ - person L_7337; 10.09.2015
comment
Большое тебе спасибо! Но я все еще ищу способ прочитать куки с другого домена. Если веб-сайт А создает файл cookie — любой файл cookie — как веб-сайт Б может его прочитать? Все, что я читаю в Интернете, это то, что файлы cookie доступны только для домена, который их создал. - person Apeksha; 10.09.2015