Аутентификация на основе токена JWT в Azure AD

Я получаю ниже Ошибка в startup.css при аутентификации токена, выданного Azure AD

JwtBearerAppBuilderExtensions.UseJwtBearerAuthentication (IA‌ pplicationBuilder, JwtBearerOptions) »устарело:« См. go.microsoft.com/fwlink/?linkid=845470 »;

И мой код

 app.UseJwtBearerAuthentication(new JwtBearerOptions
            {
                AutomaticAuthenticate = true,
                AutomaticChallenge = true,
                Authority = String.Format(Configuration["AzureAd:AadInstance"], Configuration["AzureAD:Tenant"]),
                Audience = Configuration["AzureAd:Audience"],
            });

Любое предложение, пожалуйста, я новичок в Azure и веб-API? Спасибо


person ashish jayara    schedule 27.11.2017    source источник
comment
Вы прочитали ссылку: github.com/aspnet/Security/issues/1310? Аутентификация немного изменилась в 2.0. Такой способ определения промежуточного программного обеспечения аутентификации теперь устарел.   -  person juunas    schedule 27.11.2017
comment
Привет @juunas Спасибо за ответ, да, я уже проверял эту ссылку, но не мог понять, как решить мою проблему. Если у вас есть код или дополнительная информация, это будет большим подспорьем.   -  person ashish jayara    schedule 27.11.2017


Ответы (2)


Вместо этого используйте пакет nuget Microsoft.Owin.Security.ActiveDirectory:

app.UseWindowsAzureActiveDirectoryBearerAuthentication(new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
    TokenValidationParameters = new TokenValidationParameters
    {
        ValidAudience = ConfigurationManager.AppSettings["AzureAd:Audience"]
    },
    Tenant = ConfigurationManager.AppSettings["AzureAd:AADInstance"]
});
person peco    schedule 28.11.2017
comment
Спасибо за ответ. Пространство имен Wot следует использовать для использования UseWindowsAzureActiveDirectoryBearerAuthentication. Я получаю сообщение об ошибке iapplicationbuilder не содержит определения для UseWindowsAzureActiveDirectoryBearerAuthentication - person ashish jayara; 29.11.2017
comment
Вам необходимо установить пакет Microsoft.Owin.Security.ActiveDirectory nuget. Метод расширения на IAppBuilder находится внутри класса WindowsAzureActiveDirectoryBearerAuthenticationExtensions. - person peco; 29.11.2017
comment
Как дела, @ashishjayara? - person peco; 30.11.2017
comment
Привет .. Извинения за поздний ответ, я сделал то же самое, и он сработал, но теперь он дает еще одну ошибку в TokenValidationParameters Говорит, что он утверждает, что находится в System.Identitymodel.Tokens.jwt, но не может быть найден @peco - person ashish jayara; 30.11.2017
comment
Я не уверен, что понимаю, но вы можете включить ведение журнала для ADAL. Этот ответ однажды помог мне stackoverflow.com/a/33272736/1157185 - person peco; 30.11.2017
comment
я злюсь полностью, но ничего не получил. все, что я получаю, это код Core API 1.1, который у меня уже есть, я застрял с основным API 2.0 @peco - person ashish jayara; 01.12.2017

и с приведенным ниже кодом я получил его теперь работает .. Спасибо

 public void ConfigureServices(IServiceCollection services)
        {

            services.AddAuthentication(options =>
            {
                options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
            })
          .AddJwtBearer(jwtOptions =>
          {
              jwtOptions.Authority = String.Format(Configuration["Logging:AzureAd:AadInstance"], Configuration["Logging:AzureAD:Tenant"]);
              jwtOptions.Audience = Configuration["Logging:AzureAd:Audience"];
              jwtOptions.Events = new JwtBearerEvents
              {
                  OnAuthenticationFailed = AuthenticationFailed
              };
          });

            services.AddMvc();
        }

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {

            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            app.UseAuthentication();
            app.UseMvc();
        }

        private Task AuthenticationFailed(AuthenticationFailedContext arg)
        {
            // For debugging purposes only!
            var s = $"AuthenticationFailed: {arg.Exception.Message}";
            arg.Response.ContentLength = s.Length;
            arg.Response.Body.Write(Encoding.UTF8.GetBytes(s), 0, s.Length);
            return Task.FromResult(0);
        }
person ashish jayara    schedule 01.12.2017