การรับรองความถูกต้องตามโทเค็น 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 และ web 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 ที่ฉันมีอยู่แล้ว ฉันติดอยู่กับ core 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