>백엔드 개발 >C++ >ASP.NET Core에서 여러 JWT 발급자를 지원하는 방법은 무엇입니까?

ASP.NET Core에서 여러 JWT 발급자를 지원하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-12 06:23:44253검색

How to Support Multiple JWT Issuers in ASP.NET Core?

ASP.NET Core 2에서 여러 JWT 발급자 처리

이 가이드에서는 외부 API 또는 사용자 지정 인증 시스템과 같은 다양한 소스의 JWT를 사용하여 요청을 인증하도록 ASP.NET Core 2를 구성하는 방법을 보여줍니다. 표준 ASP.NET Core JWT Bearer 인증은 일반적으로 단일 권한을 지원하지만 이러한 제한은 다중 체계 접근 방식으로 극복할 수 있습니다.

구성 단계

여러 JWT 발급자에 대한 지원을 구현하려면 다음과 같은 주요 단계가 필요합니다.

  1. 기본 구성표를 지정하지 않고 AddAuthentication 미들웨어를 추가하세요.
  2. AddJwtBearer을 사용하여 각 인증 체계를 정의하고 각각에 고유한 이름을 할당합니다. 각 구성표에 대해 AuthorityTokenValidationParameters을 개별적으로 구성합니다.
  3. 구성된 모든 인증 체계를 허용하도록 기본 인증 정책을 수정하세요.

다음은 이 구성을 보여주는 코드 예제입니다.

<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 =>
    {
        // Custom JWT token configuration
    });

services
    .AddAuthorization(options =>
    {
        options.DefaultPolicy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .AddAuthenticationSchemes("Firebase", "Custom")
            .Build();
    });</code>

고급 고려 사항 및 문제 해결

  • 복잡한 인증이 필요한 경우 정책 기반 인증을 활용하세요.
  • .NET Core 6 이상에서는 기본 인증 체계를 명시적으로 설정해야 합니다.
  • IDX10501 오류는 시스템의 정책 평가 순서로 인해 자주 발생합니다. 정책 구성을 주의 깊게 검토하는 것이 중요합니다.

이 방법을 사용하면 ASP.NET Core 2 애플리케이션 내에서 여러 JWT 발급자의 인증 및 권한 부여를 원활하게 통합할 수 있습니다.

위 내용은 ASP.NET Core에서 여러 JWT 발급자를 지원하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.