[解決済み】ASP.NET IdentityのIUserSecurityStampStore<TUser>インターフェースとは何ですか?
質問
ASP.NET Identity (ASP.NETの新しいメンバーシップの実装) を見ていると、自分で実装するときにこのインターフェースに出会いました。
UserStore
:
//Microsoft.AspNet.Identity.Core.dll
namespace Microsoft.AspNet.Identity
{
public interface IUserSecurityStampStore<TUser> :
{
// Methods
Task<string> GetSecurityStampAsync(TUser user);
Task SetSecurityStampAsync(TUser user, string stamp);
}
}
IUserSecurityStampStore
は、デフォルトの
EntityFramework.UserStore<TUser>
を取得・設定するもので、基本的には
TUser.SecurityStamp
プロパティを使用します。
さらに調べてみると、どうやら
SecurityStamp
は
Guid
の要所要所で新たに生成される。
UserManager
(例えば、パスワードの変更など)。
でこのコードを検証しているので、この先はあまり解読できません。 リフレクター . シンボルと非同期の情報はほとんどすべて最適化されています。
また、Googleもあまり協力的ではありません。
質問は
-
とは何ですか?
SecurityStamp
のASP.NET Identityで、どのような用途に使われるのですか? -
を使用するのでしょうか?
SecurityStamp
は、認証クッキーが作成されるときに何らかの役割を果たしますか? - この場合、セキュリティ上の影響や注意点はありますか?例えば、この値をクライアントに下流に送らないようにするとか?
更新情報(2014/9/16)
ソースコードはこちらで公開しています。
解決方法は?
これは、ユーザーの資格情報の現在のスナップショットを表すことを意味します。 そのため、何も変更がなければ、スタンプは同じままです。 しかし、ユーザーのパスワードが変更されたり、ログインが削除された場合(google/fbアカウントのリンクを解除)、スタンプは変更されます。 これは、このような場合に自動的にユーザーに署名する/古いクッキーを拒否するなどのために必要で、2.0に搭載される機能です。
Identityはまだオープンソースではなく、現在はまだ準備中である。
編集:2.0.0用に更新しました。
ということは、主な目的は
SecurityStamp
は、どこでもサインアウトできるようにするためのものです。 基本的な考え方は、セキュリティに関連する何かがパスワードのようにユーザ上で変更されるときはいつでも、既存のサインインクッキーを自動的に無効にするのが良い考えだということで、パスワードやアカウントが以前に漏洩した場合、攻撃者はもはやアクセスすることができません。
2.0.0では、以下のような設定を追加し、フックするようにしました。
OnValidateIdentity
メソッドを
CookieMiddleware
を見るために
SecurityStamp
を作成し、変更された場合はクッキーを拒否する。 また、ユーザーの主張をデータベースから自動的にリフレッシュするために、毎回の
refreshInterval
スタンプに変更がない場合(ロールの変更などにも対応します)
app.UseCookieAuthentication(new CookieAuthenticationOptions {
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider {
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
もし、アプリがこの動作を明示的に引き起こしたい場合は、呼び出すことができます。
UserManager.UpdateSecurityStampAsync(userId);
関連
-
Application_End イベントをブロックする解決策
-
デバッグエラー蓄積
-
[解決済み] ASP.NET WebサイトとASP.NET Webアプリケーションのどちらを選ぶか?
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVCでenumからドロップダウンリストを作成するにはどうすればよいですか?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み] ASP.NET Identity - HttpContextにはGetOwinContext用の拡張メソッドがありません。
-
[解決済み】ASP.NET Identity DbContextの混乱
-
[解決済み] ASP.NET IdentityのデフォルトのPassword Hasher - その仕組みと安全性とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
.netcoreプロジェクトでIStartupFilterを使用するためのチュートリアル
-
.NET Coreでオブジェクトプールを使用する
-
net core downlink tracking skywalking インストールと使いやすいチュートリアル
-
認証プロセスの記録にjwtを使用したネット
-
再起動を伴わないNET5の設定変更は自動的に反映される
-
403 - アクセス拒否。IIS7 でファイルを開くと、アクセス拒否されます。
-
[解決済み】開発環境と本番環境で異なるWeb.configを使用する。
-
[解決済み] ポストバック時に「オブジェクトの現在の状態により操作が有効でない」エラーが発生する
-
[解決済み] Visual Studio 新しいブラウザを開けない
-
[解決済み] FormsAuthentication.SignOut()がユーザーをログアウトしない