> 백엔드 개발 > C++ > 여러 JWT 토큰 발급자(예: Firebase 및 사용자 지정 발급자)를 지원하도록 ASP.NET Core를 구성하려면 어떻게 해야 하나요?

여러 JWT 토큰 발급자(예: Firebase 및 사용자 지정 발급자)를 지원하도록 ASP.NET Core를 구성하려면 어떻게 해야 하나요?

DDD
풀어 주다: 2025-01-12 06:24:47
원래의
384명이 탐색했습니다.

How can I configure ASP.NET Core to support multiple JWT token issuers (e.g., Firebase and a custom issuer)?

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")과 함께 사용되어 각 발급자를 별도로 등록합니다.
  • 통합 승인: 기본 승인 정책은 "Firebase" 및 "커스텀" 구성표를 모두 사용하도록 구성됩니다. 이렇게 하면 두 발급자 모두에 대해 인증 시도가 이루어집니다.

오류 처리:

인증 실패 시 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿