0

例:

アプリケーション = https://test2.mytest.com/MyApplication/Download.aspx

アプリケーションでは、web.config でフォーム認証が有効になっています。

<authentication mode="Forms">
  <forms loginUrl="https://test.mytest.com/Login/" name=".ASPXAUTH"/>
</authentication>
<authorization>
  <deny users="?"/>
</authorization>

アプリケーションにアクセスすると、ログイン ページに正しくリダイレ​​クトされます:
https://test.mytest.com/Login/?ReturnUrl=%2fMyApplication%2fDownload.aspx

ただし、ログインに成功すると、https://test2.mytest.com/MyApplication/Download.aspx ではなく、https:
//test.mytest.com/MyApplication/Download.aspx

移動します。

元のリクエストのサブドメイン(test2.mytest.com)ではなく、ログインアプリケーションがあるサブドメイン(test.mytest.com)を使用しています。ログインアプリがオンになっているサブドメインではなく、フォーム認証を元の要求サブドメインにリダイレクトする方法はありますか?

これに関する任意の助けをいただければ幸いです。

4

1 に答える 1

2

はい、確かに可能ですが、認証サブドメインと認証を必要とするサブドメインの両方で変更を加える必要があります。

認証が必要なサブドメイン。
あなたが抱えている問題は、匿名ユーザーがセキュリティで保護されたリソースにアクセスしようとすると、ASP.NET フォーム認証がそれらをログイン ページにリダイレクトし、元の要求されたリソースを "ReturnURL" クエリ文字列に追加するが、この ReturnURL パラメーターは相対 URL であることです。 .

したがって、これを希望どおりに機能させるには、ReturnURL パラメーターを操作して、別のサイトへのリターンであることを何らかの方法で示す必要があります。

これを行う 1 つの方法は、HttpHandler を使用して ReturnURL を操作し、PostAuthenticateRequest にフックすることです。詳細については、この記事「絶対リターン URL を使用したフォーム認証」を参照してください。

認証サブドメイン
呼び出しサブドメインへのリダイレクトを有効にするには、web.config のフォーム セクションでenableCrossAppRedirects属性を「true」に設定して、別の Web アプリケーションの URL へのリダイレクトを許可する必要があります。ただし、リダイレクト攻撃が開かれる可能性があるため、これの影響に注意してください。

サブドメイン アドレスを ReturnURL に直接設定する (オープン リダイレクト攻撃の防止に役立つ) 代わりのより安全な方法は、ReturnURL を変更してクエリ文字列に既知のパラメーターを含め、次に global.asax.cs の Application_EndRequest を変更することです。Response.RedirectLocation を書き換えるために、ここここで説明した認証サブドミアン。

于 2013-03-28T15:44:09.260 に答える