私はMVC 3アプリを持っています。主にセキュリティに関する2つのゾーンがあります。最初の1つは、大部分がパブリックアクセスを防止することですが、本当に機密情報ではありません。パスワードの強さは弱いかもしれません。ロールに基づいて一部のユーザーに強力なパスワードを要求する
第2ゾーン(エリア)が制限されています。ユーザーはアクセスを申請する必要があります。ユーザーがアクセス権を取得すると、特定の役割が得られます。したがって、各コントローラメソッドはそのロールに基づいてユーザーを自動化します。
次のログオン時に強力なパスワードに変更して、制限されたコンテンツにアクセスしてからアクセスできるようにします。
例:
ユーザAは、アクセスのために適用されます。 アクセスが許可されます。 のパスワードポリシーは、アクセス権がある間変更されます。彼らは次のログオン時に のパスワードを変更しなければならず、 はその役割を持っている限り弱いパスワードに戻すことができません。
ASP.NETを使用してこれを実装する安全な方法はありますか?
更新
私は実際にクリスが解決策を提案し、それが動作しますが、私は実際にはあまりにもミカの提案したソリューションからいくつかのインスピレーションを得た、パスワード自体の検証を処理するために使用しました。しかし、MembershipProvider.OnValidatingPasswordをオーバーライドすることは、実際にこれを解決する必要のない10以上の抽象メソッドを実装する必要があることを意味します。
私の目の中で、より良い解決策は、Membership.PhidwordPassword EVENTへのフックです。私はこの宿をApp_Startして、イベントハンドラで自分のパスワード検証を実装し、それが私の問題を解決しました。
ただ、これはあまりにも他の誰かのために私の問題とうまくいけばを解決しtoghetherクリス・ソリューションで、私はここにそれを提示あなたと解決策を共有する:
void App_Start()
{
//To do custom validation on certain passwords set new event handler
Membership.ValidatingPassword += Membership_ValidatingPassword;
}
private void Membership_ValidatingPassword(object sender, ValidatePasswordEventArgs e)
{
//If the user is a new user, we let registration happen without strong password
if (e.IsNewUser) return;
MembershipUser membershipUser = Membership.GetUser(e.UserName);
Guid userId = Guid.Parse(membershipUser.ProviderUserKey.ToString());
//First check if the pwd is strong enough to be flagged, if so we flag it
//using regex to validate the password (20 char, 2 uppercase so on)
if (MyValidationClass.IsStrongPassword(e.Password, 20, 2, 4, 1))
{
//if the user does not already have a flag we set one
MyValidationClass.SetStrongPasswordFlag(userId);
}
else
{
//If the user needs strong pwd, we cancel the operation and throw exception
if (MyValidationClass.NeedsStrongPassword(e.UserName))
{
e.FailureInformation =
new MembershipPasswordException("Password does not satisfy reqirements!");
e.Cancel = true;
}
else
{
MyValidationClass.RemoveStrongPasswordFlag(userId);
}
}
}
[メンバーシップとロール](http://www.asp.net/web-forms/videos/how-do-i/how-do-i-secure-my-site)に関する何かを読んだり検索したりしたことがありますか? -using-membership-and-roles)を.NETで使用しますか? – balexandre
ロールを設定する前に強力なパスワードを要求する方法はありますか?今度はパスワードを変更することで、プログラマチックに行うことができます。 – Aristos
@belexandreはい、私はそれについてかなり読んだことがありますが、私はこれに関する情報は見ていません。私は上記の質問を検索しましたが、ロールベースの認証以外の情報は見つかりませんでした。それは私の疑問ではありませんが、あなたが機密扱いとみなすものに対しては本当に強力なパスワード要求があるかもしれないが、他のコンテンツに対しては通常強くて弱いということです。私はすべてのビデオを見ていない。上のビデオリンクにこれに関する情報がありますか? – cfs