3

web.configでこのようなものを使用するとします

<authentication mode="Forms">
<forms

      loginUrl ="~/HomeLogin.aspx"
      cookieless= "AutoDetect" 
      slidingExpiration="true"
      timeout="10"
       protection ="All"

/>
</authentication>

slideExpirationがtrue(デフォルト)に設定されている場合、FormsAuthenticationModuleがユーザーを認証するたびに、チケットの有効期限が更新されます。falseに設定すると、リクエストごとに有効期限が更新されないため、チケットは、チケットが最初に作成されたときから正確にタイムアウトした分数だけ期限切れになります。

ノート: 認証チケットに保存されている有効期限は、2008年8月2日午前11時34分などの絶対的な日付と時刻の値です。さらに、日付と時刻はWebサーバーの現地時間に相対的です。この設計上の決定は、夏時間(DST)の前後にいくつかの興味深い副作用をもたらす可能性があります。これは、米国の時計が1時間進んだ場合です(Webサーバーが夏時間の観測されるロケールでホストされていると仮定します)。DSTの開始時刻(午前2:00)の近くに30分の有効期限があるASP.NETWebサイトで何が起こるかを考えてみてください。訪問者が2008年3月11日の午前1時55分にサイトにサインオンしたとします。これにより、2008年3月11日の午前2時25分(30分後)に有効期限が切れるフォーム認証チケットが生成されます。ただし、午前2:00がロールアラウンドすると、DSTのために時計が午前3:00にジャンプします。

これは問題を引き起こす可能性のある例です。このアプローチの欠点を誰かが指摘できますか。私はそれについて知りたいと思っています。

ありがとう

4

2 に答える 2

5

FormsAuthenticationは、計算にUTC時間を使用します。これを確認するには、ソースコード(またはReflector)にアクセスする必要があります。UTC日付で機能するすべてのプロパティ/メソッドは内部です。

Cookieは、 RFC 6265のセクション5.1.1に従って、有効期限にUTC時間を使用します。

「parsed-cookie-dateを、日、月、年、時、分、秒(UTC)が月の日、月の値、年の日付とします。それぞれ、値、時の値、分の値、2番目の値です。」

これは、DSTが問題にならないことを意味します。

有効期限をスライドすると、ユーザーがアクティブである限り、無期限にログインできます。これは、サードパーティが途中でCookieを取得し、同様に無期限にユーザーとして認証される可能性があることを意味します。

絶対的な有効期限はこれを停止しませんが、定期的な再認証が必要になり、サードパーティがCookieを使用できる時間枠が制限されます。

于 2012-04-12T11:08:41.177 に答える
0

フォーム認証は常にUTCで行われます。

于 2013-08-05T07:14:33.480 に答える