簡體   English   中英

ASP.NET 2.0中的雙重表單身份驗證-4.0

[英]Dual forms authentication in asp.net 2.0 - 4.0

背景

我在同一個域下有兩個網站。 一個網站僅封裝了登錄/帳戶管理功能,另一個網站是真實的網站。

  • LoginWeb-僅登錄頁面/ css / images / javascript文件夾允許匿名訪問
  • AdminWebsite-通過表單身份驗證完全鎖定。 即,甚至javascript / images / css文件夾都沒有<authorization><allow users=*>


我想實現的目標
這是我正在嘗試實現的工作流程,並且已經完成了其中的99%:

  1. 如果用戶點擊了AdminWebsite上的任何頁面, 那么他將通過FormsAuthentication發送回LoginWeb
  2. 用戶在登錄頁面中提供憑據, LoginWeb網站發布表單身份驗證票。 用戶仍未登錄AdminWebSite (通過這種方式,用戶可以轉到更改密碼頁面等並執行帳戶管理功能)
  3. 用戶在LoginWeb中又執行了兩個步驟,現在可以向其頒發AdminWebsite的FormsAuth票證並將其重定向到該票證。

99%已經在工作
這是LoginWeb中的代碼,試圖為AdminWeb發行FormsAuth票證,但無法正常工作。 即AdminWeb仍將我重定向回Login。 我確定我缺少一些非常瑣碎的東西,但我無法弄清楚到底是什么????????????

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);
}

這些是我的Forms Auth的web.config部分:
登錄網站

  <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>

該站點“跨應用程序的表單身份驗證”意味着forms屬性上的Name應該相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM