«Единый вход» с использованием существующего хранилища пользователей ASP.NET - PullRequest
0 голосов
/ 20 февраля 2019

(Использование кавычек, потому что я не думаю, что это строго случай использования единого входа. Хотя это та же концепция.)

У меня есть существующий сайт ASP.NET Web Forms (SiteA)используя Membership ...

Web.config:

<machineKey validationKey="etc"
    decryptionKey="etc"
    validation="SHA1"
    decryption="AES" />

<authentication mode="Forms">
    <forms name="goodcookie"
        loginUrl="~/login"
        timeout="2880"
        defaultUrl="~/" />
</authentication>

<membership>
    <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider"
            type="System.Web.Security.SqlMembershipProvider"
            connectionStringName="etc"
            applicationName="etc" />
    </providers>
</membership>

<roleManager enabled="true">
    <providers>
        <clear />
        <add connectionStringName="etc"
            applicationName="etc"
            name="AspNetSqlRoleProvider"
            type="System.Web.Security.SqlRoleProvider" />
    </providers>
</roleManager>

Код кнопки входа в систему:

if (Membership.ValidateUser(txtUsername.Value, txtPassword.Value))
{
    FormsAuthentication.SetAuthCookie(txtUsername.Value, true);
    Response.RedirectToRoute("home");
}

Код главной страницы для каждой загрузки страницы:

if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
    Response.Clear();
    Response.Redirect("/login", true);
}

Требуется создать новый сайт (SiteB) на отдельном домене, однако и SiteA, и SiteB будут использовать одну и ту же базу данных.

Некоторые пользователи будут иметь толькодоступ к SiteA, некоторые только к SiteB, а некоторые к SiteA и SiteB.Это будет определяться их ролью.

Я создал SiteB с идентичными значениями в Web.config (то же имя файла cookie, тот же ключ компьютера и т. Д.).Даже одно и то же имя приложения просто для проверки.Конечно, я могу войти на оба сайта с одинаковыми учетными данными, но .. если я вошел в систему SiteA и загрузил SiteB, он будет вести себя так, как будто я не аутентифицирован (т.е.. перенаправьте меня на страницу входа.)

Чего мне не хватает?

(Отредактирую, если у меня возникнут какие-либо более важные детали)

1 Ответ

0 голосов
/ 20 февраля 2019

Разные домены не могут читать сообщения друг друга, и поэтому, если вы вошли в систему SiteA, файл cookie аутентификации не отправляется при запросе SiteB.Но разные субдомены могут совместно использовать файлы cookie, поэтому решение проблемы должно быть перенесено на один домен.Также прочитайте этот вопрос и ответы для получения дополнительной информации.

...