0

バックグラウンド

同じドメインで 2 つの Web サイトを持っています。一方の Web サイトはログイン/アカウント管理機能のみをカプセル化し、もう一方の Web サイトは実際の Web サイトです。

  • LoginWeb - Login Page/css/images/javascript フォルダーのみが匿名アクセスを許可
  • AdminWebsite - フォーム認証によって完全にロックダウンされています。つまり、javascript/images/css フォルダーでさえありません<authorization><allow users=*>



が達成しようとしていること これは私が達成しようとしているワークフローであり、その 99% を達成しています。

  1. ユーザーがAdminWebsiteのいずれかのページにアクセスすると、 FormsAuthenticationによって LoginWebに戻されます。
  2. ユーザーは loginpage で資格情報を提供し、LoginWeb Web サイトはフォーム認証チケットを発行します。ユーザーはまだAdminWebSiteにログインしていません。(この方法で、ユーザーはパスワード変更ページなどに移動し、アカウント管理機能を実行できます)
  3. ユーザーは LoginWeb でさらに 2 つのステップに進み、AdminWebsite のFormsAuthチケットを発行してリダイレクトできるようになりました。

99%
はすでに機能しています これは、AdminWeb の FormsAuth チケットを発行しようとする LoginWeb のコードですが、機能していません。つまり、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 セクションです:
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>


管理者ウェブサイト

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

1 に答える 1

0

このサイトForms Authentication Across Applicationsは、フォーム属性の名前が同じであることを意味します。

于 2012-05-30T00:07:10.277 に答える