ASP.NET Core 2는 여러 JWT 토큰 공급자 처리를 지원합니다. 이 기능은 API가 다양한 JWT 토큰 발급 메커니즘을 사용하는 외부 서비스와 통합해야 할 때 중요합니다.
이 기능을 사용하려면 다음 코드를 사용하세요.
<code class="language-csharp">services .AddAuthentication() .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 => { // 在此处配置自定义 JWT 令牌选项 }); services .AddAuthorization(options => { options.DefaultPolicy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .AddAuthenticationSchemes("Firebase", "Custom") .Build(); });</code>
이 코드는 여러 가지 주요 측면에서 원래 코드 조각과 다릅니다.
AddJwtBearer
메서드에는 여러 오버로드가 있으며, 그 중 하나는 인증 체계 이름을 지정할 수 있습니다. 여러 시나리오가 있으므로 이 오버로드를 사용해야 합니다. AddAuthentication
메서드는 기본 인증 체계 설정을 피하기 위해 매개변수 없이 사용됩니다. 이는 여러 인증 체계를 처리하려면 각 요청이 모든 체계를 통과해야 하기 때문입니다. DefaultPolicy
가 "Firebase" 및 "Custom" 인증 체계를 허용하도록 수정되었습니다. 이렇게 하면 인증 시스템이 두 가지 체계를 모두 사용하여 요청을 인증하려고 시도합니다. AuthenticationFailed
이벤트를 처리하는 경우 첫 번째가 아닌 AddJwtBearer
정책의 경우 "IDX10501: 서명 확인 실패" 오류가 발생할 수 있습니다. 이는 시스템이 각 정책의 서명을 차례로 일치시키려고 시도하기 때문입니다. .NET Core 6 이상에 대한 추가 참고 사항
.NET Core 6 이상에서는 기본 인증 체계를 지정해야 합니다. 따라서 다음 코드를 대신 사용하세요:
<code class="language-csharp">builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { // Firebase 配置 }) .AddJwtBearer("AzureAD", options => { // Azure AD 配置 }); builder.Services.AddAuthorization(options => { var defaultAuthorizationPolicyBuilder = new AuthorizationPolicyBuilder( JwtBearerDefaults.AuthenticationScheme, "AzureAD"); defaultAuthorizationPolicyBuilder = defaultAuthorizationPolicyBuilder.RequireAuthenticatedUser(); options.DefaultPolicy = defaultAuthorizationPolicyBuilder.Build(); });</code>
제공된 솔루션을 구현하면 ASP.NET Core 2 애플리케이션에서 여러 JWT 토큰 발급자를 원활하게 관리할 수 있습니다.
위 내용은 ASP.NET Core에서 여러 JWT 발급자를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!