2016-06-28 3 views
1

私は、ASP.NET Identity 2.1の2要素認証コードの最大値を調べようとしています。ASP.NET ID 2因子コードの最大有効期限は何ですか?

私は次のように設定しようとしている:

app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(60)) 

が、コードは、その長いために良いではないので、おそらくこれは、クッキー自体ではなく、それが含まれているコードの有効期限である場合、私は思ったんだけど。検証コードがどのように生成されるかに基づいて、検証コードがどれくらい長く続くことができるかという技術的な制限があるかどうかは疑問です。

すべての例は、単に5分で固定されているので、これが実際の制限であるかどうかは疑問です。私はどこかで5分の上に余分な90秒の余裕があることを読んだので、それは私が得ているものの周りにあるようだ。

この質問(ASP.Net Identity 2, Two Factor Security Code timespan)は同じことをしていましたが、受け入れられた回答がなく、ほぼ1.5歳ですので、限界の視点から私が迷惑をかける前に尋ねると思いましたその答えに従ってそれを変更しようとしています。

+0

私は実際には、新しいコードを要求する前に、新しく発行されたコードを使用するのが良いというよりも、ユーザーが新しいコードで再検証する必要がある時間を設定すると思います。 。 – ChrisC

答えて

3

答えはいいえ、私はそのコードの有効期限を変更することはできません。

基盤となるトークンプロバイダはRfc6238AuthenticationServiceを使用します。内部では、それを正しく読んでいると、有効期限は3分、最大90秒までです。

私が変更した有効期限は、コード満了日ではなく、2要素コードを含むクッキーの有効期限を変更したと考えています。有効なCookieでコードが期限切れになったときに返されるエラーメッセージは、期限切れのコードと期限切れのCookieで返されたエラーとは異なることを検証しました。

UseTwoFactorSignInCookieコールのヘルプテキストでこれがうまく説明されていないのは非常に残念だと思います。

+0

私も内部を掘っていたので、有効期限がハードコードされていることを確認できました。生成されたコードを少なくとも6分間使用できるので、他に何かがあるかどうかはわかりません。 –

0

あなたが書いたコードが正しいのは、クッキーのタイムアウトを変更するだけです。でこれを行う

は、あなたが同様にあなたの質問に言及したり、質問への回答のコードを使用して有効期限を変更することができますUserManagerConstructor

IdentityFactoryOptions<UserManager> options = new IdentityFactoryOptions<UserManager>(); 
     var dataProtectionProvider = options.DataProtectionProvider; 
     if (dataProtectionProvider != null) 
     { 
      this.UserTokenProvider = new DataProtectorTokenProvider<AppUser>(dataProtectionProvider.Create("ASP.NET Identity")) 
      { 
       TokenLifespan = new TimeSpan(0,10,0) 
      }; 
     } 

それが十分ではないのですが。あなたは、あなたの質問に書いたようにあなたも、このようなあなたのスタートアップファイルで、クッキーのタイムアウトを変更する必要があります。

UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(10)); 

これは私のために働きました。

関連する問題