JwtBearerOptions를 동적으로 설정하는 방법은 무엇입니까?

ecasper

asp.net core 3.1을 백엔드로 사용하는 다중 테넌트 응용 프로그램을 개발 중입니다. 사용자를 인증하기 위해 JWT를 사용했습니다. http 요청과 함께 tenantId를 전달하고 있으며 tenantId에 대해 JWT의 유효성을 검사하고 싶습니다. 이렇게하려면 각 클라이언트 요청에서 tenantIds를 JwtBearerOptions.ValidAudience에 전달해야합니다.

시작할 때 다음과 같이 옵션을 설정합니다.

public void ConfigureServices(IServiceCollection services){
        services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        }).AddJwtBearer(configureOptions =>
        {
            configureOptions.ClaimsIssuer = jwtOptions["Issuer"];
            configureOptions.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = true,
                ValidateAudience = true,
                ValidIssuer = jwtOptions["Issuer"],
                ValidAudience = tenantId,
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = accessKey,
                RequireExpirationTime = true,
                ValidateLifetime = true,
                ClockSkew = TimeSpan.Zero
            };
        });
}

각 테넌트가 고유 한 토큰을 받아야하므로 모든 tenantId를 ValidateAudiences에 전달하고 싶지 않습니다. 예 : 테넌트 X의 토큰이 테넌트 Y를 위해 작동하는 것을 원하지 않습니다.

어떻게해야합니까?

미리 감사드립니다!

ecasper

나는 tenderid를 확인하기 위해 아래를 사용하게되었고 결과에 매우 만족합니다. 아래에 문제가 있으면 알려주세요. 감사합니다!

                ValidAudiences = tenants.Value.Select(x=>x.TenantId).ToList(),
                IssuerSigningKeyResolver = (string token, SecurityToken securityToken, string kid, TokenValidationParameters validationParameters) =>
                {
                    var tenant = tenants.Value.Where(t => t.TenantId == kid).FirstOrDefault();
                    List<SecurityKey> keys = new List<SecurityKey>();
                    if (tenant != null && kid == tenantsResolver.GetCurrentTenantId())
                    {
                        var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(tenant.SecretKey));
                        keys.Add(signingKey);
                    }
                    return keys;
                }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

RazorPay 키를 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

orderInCategory를 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

Android 장치를 기반으로 뷰 높이를 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

도구 설명 너비를 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

Java 프로그램에서 파일 경로를 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

umask를 전역 적으로 설정하는 방법은 무엇입니까?

분류에서Dev

로드시 양식의 배경 이미지를 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

jquery를 사용하여 colspan을 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

변수를 반복하고 이름을 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

Google 시트에서 셀 범위를 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

런타임에서 OmniAuth 범위를 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

Blazor에서 ValidationMessage <TValue> .For Property를 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

ReactJS. 상태를 비동기 적으로 설정하는 방법은 무엇입니까?

분류에서Dev

핸들 바 템플릿에서 ID를 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

동적으로 선언 된 ImageButton의 ImageResource를 설정하는 방법은 무엇입니까?

분류에서Dev

RDLC 보고서-Tablix의 높이를 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

XAML- ScrollViewer의 크기를 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

Objective C에서 UILabel 높이를 동적으로 설정하는 방법은 무엇입니까?

분류에서Dev

정적 변수를 동적으로 만드는 방법은 무엇입니까?

분류에서Dev

Aspect를 동적으로 적용하는 방법은 무엇입니까?

분류에서Dev

자동 BufferSize를 설정하는 방법은 무엇입니까?

분류에서Dev

자동으로 설치된 패키지를 의도적으로 설치하는 방법은 무엇입니까?

분류에서Dev

Text를 ArrayList <>로 설정하는 방법은 무엇입니까?

분류에서Dev

Meteor로 React를 설정하는 방법은 무엇입니까?

분류에서Dev

CriteriaUpdate로 true를 설정하는 방법은 무엇입니까?

분류에서Dev

Scrapy로 proxymesh를 설정하는 방법은 무엇입니까?

분류에서Dev

DateTimePicker를 특정 시간으로 설정하는 방법은 무엇입니까?

분류에서Dev

backgroundImage를 동적으로 변경하는 방법은 무엇입니까?

분류에서Dev

Bootstrap navbar를 동적으로 축소하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    RazorPay 키를 동적으로 설정하는 방법은 무엇입니까?

  2. 2

    orderInCategory를 동적으로 설정하는 방법은 무엇입니까?

  3. 3

    Android 장치를 기반으로 뷰 높이를 동적으로 설정하는 방법은 무엇입니까?

  4. 4

    도구 설명 너비를 동적으로 설정하는 방법은 무엇입니까?

  5. 5

    Java 프로그램에서 파일 경로를 동적으로 설정하는 방법은 무엇입니까?

  6. 6

    umask를 전역 적으로 설정하는 방법은 무엇입니까?

  7. 7

    로드시 양식의 배경 이미지를 동적으로 설정하는 방법은 무엇입니까?

  8. 8

    jquery를 사용하여 colspan을 동적으로 설정하는 방법은 무엇입니까?

  9. 9

    변수를 반복하고 이름을 동적으로 설정하는 방법은 무엇입니까?

  10. 10

    Google 시트에서 셀 범위를 동적으로 설정하는 방법은 무엇입니까?

  11. 11

    런타임에서 OmniAuth 범위를 동적으로 설정하는 방법은 무엇입니까?

  12. 12

    Blazor에서 ValidationMessage <TValue> .For Property를 동적으로 설정하는 방법은 무엇입니까?

  13. 13

    ReactJS. 상태를 비동기 적으로 설정하는 방법은 무엇입니까?

  14. 14

    핸들 바 템플릿에서 ID를 동적으로 설정하는 방법은 무엇입니까?

  15. 15

    동적으로 선언 된 ImageButton의 ImageResource를 설정하는 방법은 무엇입니까?

  16. 16

    RDLC 보고서-Tablix의 높이를 동적으로 설정하는 방법은 무엇입니까?

  17. 17

    XAML- ScrollViewer의 크기를 동적으로 설정하는 방법은 무엇입니까?

  18. 18

    Objective C에서 UILabel 높이를 동적으로 설정하는 방법은 무엇입니까?

  19. 19

    정적 변수를 동적으로 만드는 방법은 무엇입니까?

  20. 20

    Aspect를 동적으로 적용하는 방법은 무엇입니까?

  21. 21

    자동 BufferSize를 설정하는 방법은 무엇입니까?

  22. 22

    자동으로 설치된 패키지를 의도적으로 설치하는 방법은 무엇입니까?

  23. 23

    Text를 ArrayList <>로 설정하는 방법은 무엇입니까?

  24. 24

    Meteor로 React를 설정하는 방법은 무엇입니까?

  25. 25

    CriteriaUpdate로 true를 설정하는 방법은 무엇입니까?

  26. 26

    Scrapy로 proxymesh를 설정하는 방법은 무엇입니까?

  27. 27

    DateTimePicker를 특정 시간으로 설정하는 방법은 무엇입니까?

  28. 28

    backgroundImage를 동적으로 변경하는 방법은 무엇입니까?

  29. 29

    Bootstrap navbar를 동적으로 축소하는 방법은 무엇입니까?

뜨겁다태그

보관