Как Вы передаете аутентифицируемую сессию между доменами приложения

Это лучшее решение, на мой взгляд, намного короче, чем другие:

function OnSelect(e) {
    var acceptedFiles = [".jpg", ".jpeg", ".png", ".gif"];
    var isAcceptedImageFormat = ($.inArray(e.files[0].extension, acceptedFiles)) != -1;

    if (!isAcceptedImageFormat) {
        $('#warningMessage').show();
    }
    else {
        $('#warningMessage').hide();
    }
}

В этом случае функция вызывается из элемента управления Kendo Upload с этим параметром:

.Events(e => e.Select("OnSelect")).

9
задан 5 revs, 3 users 100% 23 February 2017 в 17:37
поделиться

8 ответов

Попытайтесь использовать FormAuthentication путем установки web.config раздела аутентификации как так:

<authentication mode="Forms">
  <forms name=".ASPXAUTH" requireSSL="true" 
      protection="All" 
      enableCrossAppRedirects="true" />
</authentication>

Генерируйте ключ машины. Пример: Самый Легкий способ генерировать MachineKey – Подсказки и приемы: ASP.NET, IIS...

При регистрации на другое приложение билет аутентификации передается как скрытое поле. Читая сообщение из первого приложения, второе приложение будет читать зашифрованный билет и аутентифицировать пользователя. Вот пример страницы, которая передает, который отправляет поле:

.aspx:

<form id="form1" runat="server">
  <div>
    <p><asp:Button ID="btnTransfer" runat="server" Text="Go" PostBackUrl="http://otherapp/" /></p>
    <input id="hdnStreetCred" runat="server" type="hidden" />
  </div>
</form>

код - позади:

protected void Page_Load(object sender, EventArgs e)
{
    FormsIdentity cIdentity = Page.User.Identity as FormsIdentity;
    if (cIdentity != null)
    {
        this.hdnStreetCred.ID = FormsAuthentication.FormsCookieName;
        this.hdnStreetCred.Value = FormsAuthentication.Encrypt(((FormsIdentity)User.Identity).Ticket);
    }
}

Также см., что перекрестное приложение формирует раздел аутентификации в Главе 5 этой книги от Wrox. Это рекомендует ответы как те выше в дополнение к обеспечению домашнего пива решения SSO.

5
ответ дан 4 December 2019 в 23:08
поделиться

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

<authentication mode="Forms">
    <forms name=".ASPXAUTH" loginUrl="~/Login.aspx" path="/" 
                  protection="All" 
                  domain="datasharp.co.uk" 
                  enableCrossAppRedirects="true" />

</authentication>

Удостоверьтесь, что имя, путь, защита и домен являются тем же во всем web.configs. Если сайты будут на различных машинах, то необходимо будет также удостовериться, что machineKey и проверка и ключи шифрования являются тем же.

2
ответ дан 4 December 2019 в 23:08
поделиться

Разрешение зависит от типа приложения и среды, в которой это работает. Например, на интранет с Доменом NT можно использовать NTLM для передачи учетных данных окон непосредственно серверам в периметре интранет без любой потребности копировать сессии.

Подход, как сделать это, обычно называют единой точкой входа (см. Википедию).

0
ответ дан 4 December 2019 в 23:08
поделиться

Существует несколько подходов к этой проблеме, которая описана как "Междоменная Единая точка входа". Статья Википедии, на которую указывает Matej, особенно полезна при поиске решения с открытым исходным кодом - однако - в среде окон I живо Вы лучше всего выключены с одним из 2 подходов:

  1. Купите коммерческий продукт SSO (как SiteMinder или PingIdentity)
  2. Используйте междоменное решение Microsoft SSO, названное ADFS - Active Direcctory Federation Services. (федерация является термином для координирования поведения нескольких доменов),

Я использовал SiteMinder, и он работает хорошо, но это дорого. Если Вы находитесь во всей среде Microsoft, я думаю, что ADFS является Вашим лучшим выбором. Запустите с этого технического описания ADFS.

0
ответ дан 4 December 2019 в 23:08
поделиться

При хранении сеансов пользователя в базе данных Вы могли бы просто проверить существование Гуида в таблице сессии, если это существует, то пользователь, уже аутентифицируемый на другом домене. Чтобы это работало, у Вас был бы к включенному гуид сессии в URL при перенаправлении пользователя к другому веб-сайту.

1
ответ дан 4 December 2019 в 23:08
поделиться

Я был бы пользователь что-то как CAS:

[1]: http://www.ja-sig.org/products/cas/ CAS

Это - решенная проблема и не рекомендовало бы прокрутить Ваше собственное.

0
ответ дан 4 December 2019 в 23:08
поделиться

Не уверенный, что Вы использовали бы для.NET, но обычно я буду использовать memcached в стеке LAMP.

0
ответ дан 4 December 2019 в 23:08
поделиться

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

Поместите единственное пиксельное изображение (веб-маяк) на сайте, который назвал бы сайт B прохождением через пользовательский идентификатор (зашифрованный и время штампованный). Это затем создало бы новый сеанс пользователя на сайте B для пользователя, который будет установлен, как вошел в систему. Затем, когда пользователь посетил сайт B, они уже будут зарегистрированы.

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

-1
ответ дан 4 December 2019 в 23:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: