ASP.NET Core에서 여러 JWT 토큰 발급자 지원
이 가이드에서는 Firebase 및 사용자 지정 발급자와 같은 여러 소스에서 JWT를 인증하도록 ASP.NET Core를 구성하는 방법을 설명합니다. 표준 AddJwtBearer
방법은 단일 권한만 지원하므로 이는 일반적인 문제입니다.
해결책: 다중 인증 체계
핵심은 ASP.NET Core 내에서 여러 인증 체계를 활용하는 것입니다. 이를 통해 애플리케이션은 다양한 발급자의 JWT를 독립적으로 처리할 수 있습니다.
구현(ASP.NET Core 2 이상):
<code class="language-csharp">services .AddAuthentication() // No default scheme specified .AddJwtBearer("Firebase", options => { options.Authority = "https://securetoken.google.com/my-firebase-project"; options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = "my-firebase-project", ValidateAudience = true, ValidAudience = "my-firebase-project", ValidateLifetime = true }; }) .AddJwtBearer("Custom", options => { // Configure validation parameters for your custom JWT issuer here. // Example: options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = "your-custom-issuer", ValidateAudience = true, ValidAudience = "your-api-audience", ValidateLifetime = true, IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-secret-key")) // Or your key retrieval method }; }); services .AddAuthorization(options => { options.DefaultPolicy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .AddAuthenticationSchemes("Firebase", "Custom") .Build(); });</code>
주요 개선 사항:
AddAuthentication()
은 매개변수 없이 호출됩니다. 이렇게 하면 단일 체계를 사용한 자동 인증이 방지되어 정의된 모든 체계가 인증을 시도할 수 있습니다.AddJwtBearer
는 체계 이름("Firebase", "Custom")과 함께 사용되어 각 발급자를 별도로 등록합니다.오류 처리:
인증 실패 시 IDX10501
오류가 발생할 수 있습니다. 이는 각 체계를 순차적으로 확인하는 인증 미들웨어로 인해 발생하는 경우가 많습니다. 대부분의 경우 이 오류는 무시해도 됩니다.
ASP.NET Core 6 이상:
최신 버전에서는 기본 인증 체계가 필요합니다. 다음은 적합한 예입니다.
<code class="language-csharp">builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.Audience = "your-api-audience"; options.Authority = "your-identity-server-url"; // Or your default JWT issuer }) .AddJwtBearer("AzureAD", options => { options.Audience = "your-api-audience"; options.Authority = "your-azure-ad-authority"; }); builder.Services.AddAuthorization(options => { options.DefaultPolicy = new AuthorizationPolicyBuilder( JwtBearerDefaults.AuthenticationScheme, "AzureAD") .RequireAuthenticatedUser() .Build(); });</code>
"my-firebase-project"
, "your-custom-issuer"
, "your-secret-key"
, "your-api-audience"
, "your-identity-server-url"
, "your-azure-ad-authority"
같은 자리 표시자를 실제 값으로 바꿔야 합니다. 프로덕션 환경에서는 보다 강력한 키 관리를 사용하는 것이 좋습니다. 정책 기반 승인은 복잡한 시나리오에 대해 더욱 세밀한 제어를 제공할 수 있습니다.
위 내용은 여러 JWT 토큰 발급자(예: Firebase 및 사용자 지정 발급자)를 지원하도록 ASP.NET Core를 구성하려면 어떻게 해야 하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!