2017-12-20 141 views
6

Mam obecnie dwa różne projekty, jeden MainAPI, który ujawni funkcje dla mojego klienta WWW, i inny, AuthAPI, który obsługuje wszystkie żądania uwierzytelnienia, wszystkie zbudowane przy użyciu netcore 2.Błąd w zdalnym uwierzytelnianiu JWT przy użyciu NetCore 2

Jeśli zadzwonię bezpośrednio do interfejsu AuthAPI, będzie on obsługiwał żądania według potrzeb.

Kiedy próbuję uwierzytelnić żądania głównego API za pomocą interfejsu AuthAPI, nie można tego zrobić, mimo że widzę żądania przychodzące i wychodzące z interfejsu AuthAPI.

Oto moja konfiguracja uwierzytelniania usługi w MainAPI Startup.cs:

services.AddAuthentication(option => 
       option.DefaultAuthenticateScheme = "Bearer") 
       .AddJwtBearer(options => 
       { 
        options.MetadataAddress = "http://localhost:5019/auth/api/info"; 
        options.Authority = "http://localhost:5019"; 
        options.Audience = AUDIENCE; 
        options.RequireHttpsMetadata = false; 
        options.SaveToken = true; 

        options.BackchannelHttpHandler = new BackChannelHttpHandler(); 

        options.IncludeErrorDetails = true; 

       }); 

Oto BackChannelHttpHandler klasa:

public class BackChannelHttpHandler : HttpMessageHandler 
    { 
     protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
     { 

      HttpClient client = new HttpClient(new HttpClientHandler(), disposeHandler: false);   
      client.DefaultRequestHeaders.Add("Accept", "application/json"); 
      var res = await client.GetAsync(request.RequestUri); 
      return res; 
     } 
    } 

a kontroler Wołam jak adnotacją zezwolenia, jak następuje:

[Authorize(AuthenticationSchemes = "Bearer")] 

Co do AuthAPI, mam Corsa skonfigurowanego w Startu p.cs:

services.AddCors(options => 
    { 
     options.AddPolicy("CorsConfig", 
         builder => builder 
          .AllowAnyOrigin() 
          .AllowAnyHeader() 
          .AllowAnyMethod() 
          .AllowCredentials() 
          .Build()); 
}); 

W kontrolerze AuthAPI mam również adnotację [EnableCors("CorsConfig")].

Mogę uzyskać wywołanie kontrolera AuthAPI i zwraca HTTP-200, ale w moim MainAPI zostaje wywołane coś w procesie autoryzacji, które nie jest autoryzowane, a moje wywołanie do kontrolera MainAPI nigdy nie zostanie wykonane.

Moje zadanie polega na tym, co robię źle w procesie uwierzytelniania głównego interfejsu API, który sam uwierzytelnia token i unieważnia żądanie.

+0

Czy wywołujesz AuthAPI z serwera MainAPI? Jak wygląda połączenie? –

Odpowiedz

0

zwróć uwagę na te opcje parametru .Audience; powinien mieć dostępne punkty końcowe.

lub możesz udostępnić klucz między aplikacjami, aby zwiększyć produktywność. Każdy punkt końcowy może odczytywać ładunek z tokena, ale tylko serwer-autor może tworzyć tokeny.

+0

O ile mi wiadomo, publiczność może być dowolnym ciągiem znaków. Korzystam z "Użytkowników" z powodzeniem, w tym z zaproszeń CORS. –

Powiązane problemy