Założyłem podstawowy projekt WebApi zgodnie z tym przewodnikiem https://identityserver.github.io/Documentation/docsv2/overview/jsGettingStarted.html
Sprawdzanie tokenów działa dobrze, jeśli przekazuję prawidłowy zakres APi w tokenie, ale jeśli nie jest dołączony (jeśli użytkownik odmawia dostępu), to kontynuuje dodawanie 403 do odpowiedzi zgodnie z oczekiwaniami.
W EmitCorsResponseHeaders (ScopeRequirementMiddleware.cs) idzie dodać nagłówki CORS, ale zgłasza wyjątek -
[ArgumentException: The key "Access-Control-Allow-Origin" is already present in the dictionary.]
Microsoft.Owin.Host.SystemWeb.CallHeaders.AspNetResponseHeaders.Add(String key, String[] value) +178
IdentityServer3.AccessTokenValidation.ScopeRequirementMiddleware.EmitCorsResponseHeaders(IDictionary`2 env) in c:localidentityserver3AccessTokenValidationsourceAccessTokenValidationPlumbingScopeRequirementMiddleware.cs:97
Czy to się dzieje, czy jest coś, co przeoczyłem? app.UseCors (CorsOptions.AllowAll) jest ustawiona w pliku startup.cs, jak określono w przewodniku dla początkujących.
Dzięki
Odpowiedzi:
2 dla odpowiedzi № 1Tutaj rzeczywiście jest problem, ale nie jestem całkowicie pewien, jak rozwiązać ten problem.
The ScopeRequirementMiddleware próbuje ustawić Allow-Access-Control-Origin
nagłówek odpowiedzi, ale robi to tylko wtedy, gdy nie jest spełnione wymaganie zakresu określone w oprogramowaniu pośredniczącym.
To oczywiście kłóci się z faktem, że już wcześniej mamy oprogramowanie pośrednie CORS w potoku OWIN, który już ustawił ten konkretny nagłówek.
Nie jestem pewien, dlaczego oprogramowanie pośredniczące do wymagań zakresu ustawia te nagłówki w tym konkretnym przypadku, utworzę problem na GitHub i powiążę go tutaj w celu zwiększenia widoczności.