2017-10-28 22 views
5

Tôi có một Asp.Net Lõi 2.0 WebAPI được xác thực đối với AAD:Cách đặt nhiều đối tượng trong phần mềm trung gian "AddJwtBearer" của Asp.Net Core 2.0?

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

ứng dụng SPA tôi nhận được token từ AAD và gửi nó như bearer tiêu đề. Tất cả đều ổn.

tôi đã tạo ra một công việc trong Azure Scheduler và thiết lập Active Directory OAuth: Job - Active Directory OAuth

Sau khi chạy một công việc tôi nhận được lỗi này: Bearer error="invalid_token", error_description="The audience is invalid".

Khi tôi đặt options.Audience trong AddJwtBearer(...) thành https://management.core.windows.net/ công việc đó chứ không phải SPA.

Tôi đoán, tôi cần đặt Audience thành mảng ['CLIENT_ID', "https://management.core.windows.net/"] nhưng options.Audience là loại string. Nếu tôi không đặt Audience thì cả Spa và Công việc đều không hoạt động (401 chưa được xác thực). Đặt Audience thành CLIENT_ID,https://management.core.windows.net/ cũng không hoạt động.

Có cách nào để bật nhiều đối tượng trong AddJwtBearer không?

Trả lời

8

Tôi nghĩ rằng tôi đã gặp phải vấn đề tương tự như bạn. Để làm cho nó hoạt động tôi di chuyển khán giả từ options và vào TokenValidationParameters, chấp nhận nhiều mục nhập. Kiểm tra mã bên dưới:

.AddJwtBearer(options => 
{ 
    options.Authority = "https://login.windows.net/trades.no"; 
    options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters 
    { 
     ValidateIssuer = true, 
     ValidAudiences = new List<string> 
     { 
      "AUDIENCE1", 
      "AUDIENCE2" 
     } 
    }; 
+0

Đó chính xác là những gì tôi đang tìm kiếm. Công trinh. Cảm ơn bạn. –

Các vấn đề liên quan