2017-10-02 5 views
1

単一のasp.netコア2.0アプリケーションで複数の発行者からのJWTを処理する方法はありますか?私は現在のトークンをチェックしていますどのようにここでasp.netコア2.0で異なる発行者と複数のJWTを許可する方法

:私は権限の異なる種類の異なるユーザータイプを処理する必要があるため

public void ConfigureServices(IServiceCollection services) 
{ 
    TokenValidationParameters tokenValidationParameters = new TokenValidationParameters 
    { 
     // ... 

     ValidateIssuer = true, 
     ValidIssuer = options.Issuer, // <-- could this be a list of issuers? 

     // ... 
    }; 

    services.AddAuthentication() 
     .AddJwtBearer(jwtOptions => 
     { 
      jwtOptions.TokenValidationParameters = tokenValidationParameters; 
     }); 

    services.AddAuthorization(authOptions => 
     { 
      authOptions.DefaultPolicy = new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme).RequireAuthenticatedUser().Build(); 
     }); 
} 

public void Configure(IApplicationBuilder app) 
{ 
    // ... 
    app.UseAuthentication(); 
} 

私は複数の発行体を処理したい理由です。マイクロサービスアーキテクチャ環境で一部のサービスでのみ特定のユーザーを許可するには、別の発行者で各ユーザータイプのトークンを発行したいと考えています。

答えて

1

単純な答えは、ValidIssuerプロパティの代わりにTokenValidationParametersインスタンスのValidIssuersプロパティを設定することです。 ValidIssuersプロパティはIEnumerableを受け取ります。したがって、発行者名のリストを入力し、そのプロパティに割り当てる(またはリストをインライン化する)ことができます。

var issuers = new List<string>() 
    { 
     "issuerA", 
     "issuerB" 
    }; 
// ... 
TokenValidationParameters tokenValidationParameters = new TokenValidationParameters 
{ 
    // ... 

    ValidateIssuer = true, 
    ValidIssuers = issuers 

    // ... 
}; 

警告:(あなたの代わりにIssuerSigningKeyプロパティの対応IssuerSigningKeysプロパティを使用している場合、または秘密のリスト)これは、各発行体の株式と同じ秘密を前提としています。

+0

多くの感謝!時々、答えはあなたがそれを見ないほど明白です。 – Mathias

関連する問題