Аутентификация двойных форм в asp.net 2.0 - 4.0

ФОН

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

  • LoginWeb - только страница входа в систему / папка css/images/javascript разрешает анонимный доступ
  • AdminWebsite - полностью заблокирован через формы авторизации. то есть даже нет папок javascript/images/css <authorization><allow users=*>


Что я пытаюсь достичь
Это рабочий процесс, который я пытаюсь достичь и выполнил 99%:

  1. Если пользователь переходит на какую- либо страницу на сайте AdminWebsite, он отправляется обратно в LoginWeb с помощью FormsAuthentication
  2. Пользователь вводит учетные данные на странице входа в систему, а веб- сайт LoginWeb выдает билет для проверки подлинности форм. Пользователь еще не вошел в AdminWebSite. (Таким образом, пользователь может перейти на страницу смены пароля и т. Д. И выполнить функции управления учетной записью)
  3. Пользователь проходит еще два шага в LoginWeb и теперь может получить билет FormsAuth для AdminWebsite и перенаправиться на него.

99% уже работает
Это код в LoginWeb, который пытается выдать билет FormsAuth для AdminWeb, но он не работает. то есть AdminWeb все еще перенаправляет меня обратно на страницу входа. Я уверен, что есть кое-что очень тривиальное, что я пропускаю, но я не могу понять, что именно это?????????

public void SetAuthenticationTicket(string username)
{
    MachineKeySection sec=(MachineKeySection)WebConfigurationManager.OpenWebConfiguration("").SectionGroups["system.web"].Sections["machineKey"]; 
    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
        username,
        DateTime.Now,
        DateTime.Now.AddMinutes(30),
        false, //true or false
        sec.DecryptionKey, //Custom data like your webkey can go here
        FormsAuthentication.FormsCookiePath);

    var encryptedTicket = FormsAuthentication.Encrypt(ticket);
    var cookie = new HttpCookie("ADMINWEB", encryptedTicket)
    {
        Path = FormsAuthentication.FormsCookiePath,
        Domain = "xxx.com"
    };
    Response.AppendCookie(cookie);
}

Это мои разделы web.config для Auth форм:
LoginWeb

  <machineKey validationKey="XXXXXX" decryptionKey="XXX" validation="SHA1"/>
  <authentication mode="Forms">
    <forms name="LoginWeb"
            domain="xxx.com"
            loginUrl="~/account/Logon"
            timeout="1440"
            cookieless="UseCookies"
            slidingExpiration="false"
            protection="All"
            path="/"/>
  </authentication>


AdminWebSite

   <machineKey validationKey="XXXXXX" decryptionKey="XXX" validation="SHA1"/>
  <authentication mode="Forms">
    <forms name="ADMINWEB"
            domain="xxx.com"
            loginUrl="http://loginweb/account/Logon"
            timeout="1440"
            cookieless="UseCookies"
            slidingExpiration="false"
            protection="All"
            path="/"/>
</authentication>
<authorization>
    <deny users="?"/>
</authorization>

1 ответ

Этот сайт, проверка подлинности форм в приложениях, подразумевает, что имя в атрибуте форм должно быть одинаковым.

Другие вопросы по тегам