Нужно ли проверять токены JWT в API REST asp.net core 2? - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть следующий код в конфигурации ядра REST API asp.net:

services
    .AddAuthentication(options => { options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; })
    .AddJwtBearer(options =>
        {
            options.Authority = "https://login.microsoftonline.com/XXXTenantIDXXX";
            options.Audience = "XXXX clientId XXXX";
        });

services.AddMvc(o =>
    {
        var policy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .Build();
        o.Filters.Add(new AuthorizeFilter(policy));

Он аутентифицирует запросы.Он работает нормально.

Я обеспокоен и обеспокоен подделкой токенов jwt или токенов jwt, которые приходят из других приложений AAD в арендаторе.

Я ожидаю, что код выше предоставляет всю информацию для aspПроверка подлинности ядра .net для проверки правильности JWT и его аудитории - правильное приложение AAD.

Я хотел подтвердить свои ожидания и спросить, нужна ли мне дополнительная логика (код) для проверки токена JWT?

1 Ответ

0 голосов
/ 23 ноября 2018

Да, Asp.Net Core Middleware проверяет токен JWT.Убедитесь, что вы конфигурируете JWT Bearer Options и параметры проверки токена, чтобы Asp.Net Core Middleware проверил его.

Например:

      services.AddAuthentication(auth =>
        {
            auth.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            auth.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        }).AddJwtBearer(options =>
        {               
            options.ClaimsIssuer = jwtAuthSettings.ValidIssuer;//Your issuer
            options.IncludeErrorDetails = true;
            options.RequireHttpsMetadata = true;
            options.SaveToken = true;
            options.Validate(JwtBearerDefaults.AuthenticationScheme);
            options.TokenValidationParameters = new TokenValidationParameters()
            {
                ClockSkew = TimeSpan.FromMinutes(30),
                ValidateIssuer = true,
                ValidateAudience = true,
                ValidateLifetime = true,
                ValidateIssuerSigningKey = true,
                ValidIssuer = jwtAuthSettings.ValidIssuer, //Your issuer
                ValidAudience = jwtAuthSettings.ValidAudience,//Your Audience
                IssuerSigningKey = jwtAuthSettings.SymmetricSecurityKey, //Your Key
                NameClaimType = ClaimTypes.NameIdentifier,
                RequireSignedTokens = true,
                RequireExpirationTime = true

            };
        });
...