課題: ASP.NET Core 2 内の異なる JWT トークン発行者を使用して、複数の外部サービスからの API アクセスを有効にするにはどうすればよいでしょうか? 具体的には、Firebase とカスタム JWT プロバイダーの両方からの認証をサポートする必要があります。
解決策: ASP.NET Core の柔軟性により、複数の認証スキームを構成できるため、さまざまな JWT ソースからの認証が可能になります。 その方法は次のとおりです:
よくある間違いは、パラメーターを指定せずに AddAuthentication
を呼び出すことです。 複数の認証スキームの場合は、スキーム名を表す文字列パラメーターを受け入れるオーバーロードを使用する必要があります。
AddJwtBearer
を各認証スキーム (「Firebase」や「カスタム」など) ごとに 1 回ずつ、複数回使用します。 各呼び出し内で、各 JWT 発行者に固有の Authority
と TokenValidationParameters
を指定します。
複数のスキームに対応するには、デフォルトの認証ポリシーを更新する必要があります。 AddAuthorization
を含むポリシーを構成するには、DefaultPolicy
を使用します。 「Firebase」スキームと「Custom」スキームの両方が DefaultPolicy
.
この例は、適切な構成を示しています。
<code class="language-csharp">services .AddAuthentication() .AddJwtBearer("Firebase", options => { // Configure Firebase JWT authentication settings here }) .AddJwtBearer("Custom", options => { // Configure Custom JWT authentication settings here }); services .AddAuthorization(options => { options.DefaultPolicy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .AddAuthenticationSchemes("Firebase", "Custom") .Build(); });</code>
複雑な承認ニーズには、ポリシーベースの承認を活用します。これにより、認証スキームと要求要件を指定するポリシーを作成できます。
新しい .NET Core バージョンでは、AddAuthentication
でデフォルトの認証スキームを指定する必要があります。
以上がASP.NET Core 2 で複数の JWT ベアラー認証スキームを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。