2017-07-12 8 views
0

私のidsrvクッキーに物理的な有効期限がないような問題があります。 誰もがブラウザを閉じてこのCookieを強制終了するように見えるため、共有コンピュータのユーザは互いにログインしています。idsrvクッキーを永続化するのではなくタイムアウトにすることができません。

誰かが私がやっているべきことを明らかにしてもらえますか?

enter image description here

+0

ユーザはログアウトしないで(このクッキーを殺す)、ブラウザを閉じることはありません(同上)。私は、IdentityServerセッションが次のユーザーによって取得されることを懸念しています。しかし、IdentityServerが他のWebサイトにサインインするために使用され、独自のセッションを確立すると、このidsrv cookieを強制終了すると、それらを強制終了しません。したがって、次のユーザーは、フェデレーションされたWebサイトで前のユーザーのセッションにアクセスすることになります。 ブラウザを閉じたりログアウトしたりする必要があるかどうかは不明です。 –

答えて

1

あなたは、これは、ブラウザセッションに対して、クッキーを永続化だけでなく、あなたは有効期限を設定することが可能になり、有効期限を設定するために永続的なCookieを使用する必要があります。

var result = 
    await _signInManager.PasswordSignInAsync(model.Email, model.Password, true, true); 

は、サインインする他の方法があります:あなたが使用してますが、ここでASPNETコアを使用した例ですしているASP.NETのバージョンを言及していない(ここでは3番目のパラメータは、クッキーを保持する場合はtrueでなければなりません)あなたは永続的なフラグを設定することができます過負荷を持っています。

次に、Cookieオプションを設定するときに有効期限を設定する必要がある場合は、有効期限を指定できます。 Asp.Netアイデンティティを使用している場合:

services.AddIdentity<ApplicationUser, IdentityRole>(
    o => o.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromMinutes(30)); 

(ベアは心の中であなたがコアにあり、あなたがにアップグレードするか、V2.0を使用する場合はhereを参照してください、代わりにservices.ConfigureApplicationCookieを使用する必要がありますこと)。

もちろん、有効期限内にマシンを交換するユーザーを排除するわけではありませんが、有効期限を短くすることはできます。

SlidingExpirationは、それが要求を処理し、いつでも新しい有効期限を持つ新しいクッキーを再発行するミドルウェアに指示するには、trueに設定されている:何も行うことができますすることは有効期限と一緒にSlidingExpirationフラグを使用しています有効期限ウィンドウの半分以上。

有効期限を減らすことができ、ユーザーがまだアクティブである限り、新しいCookieを取得できます。したがって、上記のコードは次のように調整することができます:

関連する問題