0

ASP.NETアプリケーション内で検証(認証)の問題があります-Cookieを有効にしてFormsAuthenticationを使用していますが、セキュリティ上の理由から、別の外部認証ソースも使用する必要があります(ユーザー名とパスワードの組み合わせに基づいてユーザーに"セッションID")

ユーザーがユーザー名/パスワードのクレデンシャルを使用してログインすると、アプリケーションは正常に機能します(したがって、sessionIDを取得します)。ただし、Cookieが有効になっているため、ログインページを「スキップ」でき(ユーザーはdefault.aspxにリダイレクトされます)、適切なセッションIDを取得できません。

私の質問は、ユーザーかどうかを確認する可能性があるかどうかです

a)ログインページから来た(したがって、default.aspxにリダイレクトされた)

また

b)formsAuthenticationは、ユーザー名/パスワードではなく、Cookieデータに基づいて実行されました

4

2 に答える 2

1

ユーザーがログインするとdefault.aspxページにリダイレクトすると仮定すると(ページの読み込みにリダイレクトされたクライアントからの認証Cookieが含まれるようになります)、global.asax.csのApplication_AuthenticateRequestイベントを使用して認証されているかどうかがわかります。 :

protected void Application_AuthenticateRequest(Object oSender, EventArgs eA)
{
    // Wire up authenticated principal with user information.

    if (this.Request.IsAuthenticated == true)
    {
         // do something with this.User.Identity.Name to map to a "sessionid"
    }
}

リダイレクトされたユーザーとしてログインして自宅に到着したのか、ブラウザに保存されたCookieを使用して直接自宅(またはその他のビュー)にアクセスしたのかを判断することについて質問されますが、それは問題ではないと思います。ログイン処理の一部としてユーザーの追加の認証キーを保存している場合は、保護されたページへのすべてのアクセスに対してAuthenticateRequestイベントで保存する必要があります。注:そのイベントは多くの場合(cssファイル、画像など)に発生します。.aspx以外のすべての種類の要求を無視することをお勧めします。

于 2012-10-10T07:43:23.057 に答える
0

はい、「request.UrlReferrer.ToString」を使用してユーザーがどのページからアクセスしたかを確認し、ログインページのURLと比較できます。

于 2012-10-10T07:47:30.310 に答える