2017-09-22 19 views
0

2人の異なるユーザーに対してJWTトークンを構成することは可能でしょうか?最初にトークンの有効期限が設定され、2番目のトークンには有効期限が設定されません。asp.netコアID - 2種類のjwtトークン

私はJWT設定用に次のコードを用意していますが、これは1人の視聴者にのみ有効です。

private void ConfigureSecurity(IServiceCollection services) 
    { 
     services.AddAuthentication() 
      .AddCookie(cfg => cfg.SlidingExpiration = true) 
      .AddJwtBearer(cfg => 
      { 
       cfg.RequireHttpsMetadata = false; 
       cfg.SaveToken = true; 

       cfg.TokenValidationParameters = new TokenValidationParameters() 
       { 
        ValidateIssuer = true, 
        ValidateAudience = true, 
        RequireExpirationTime = false, 
        ValidIssuer = Configuration["Tokens:Issuer"], 
        ValidAudience = Configuration["Tokens:Issuer"], 
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Tokens:Key"])), 
       }; 
      }); 

     services.AddAuthorization(); 
    } 

答えて

1

お試しできることがいくつかあります。 AddJwtBearerファンクションの最初のものは、スキーム名も受け入れます。異なるスキーム名を持つ2つのJwtBearersを追加することができます。しかし、それが複数の問題を許容するかどうかは完全にはわかりません

もう1つの方法は、独自のJwtEventBearerを設定してcfg.Eventsに設定することです。

その他すべてが失敗した場合は、いつでも手動でjwtを手動で作成して検証できます。 まず、2つのトークン検証パラメータオブジェクトを作成する必要があります。あなたはこのようなあなたのトークンを作成することができます。検証のため

 var handler = new JwtSecurityTokenHandler(); 

     var jwt = handler.CreateJwtSecurityToken(new SecurityTokenDescriptor 
     { 
      Audience = myAudience, 
      Expires = DateTime.UtcNow.Add(Expiary), 
      Subject = myPrincipal, 
      SigningCredentials = Signing 
     }); 

     return handler.WriteToken(jwt); 

には、最初に観客をチェックすることができます。

 var _token = handle.ReadJwtToken(token); 
     if (_token.Audiences == ...) 

あなたは聴衆があり、使用する検証パラメータをどのトークン何かを見つけたら、することができますこれで検証してください:

 SecurityToken sToken = handle.CreateJwtSecurityToken(); 
     var myPrincipal = handle.ValidateToken(token, TokenValidationParameters, out sToken); 
+0

返信いただきありがとうございます。 – aph5

関連する問題