Identity Server 4 не устанавливает `Access-Control-Allow-Origin` для` .well-known / openid-configuration` - PullRequest
0 голосов
/ 01 августа 2020

Builder для политики:

        private CorsPolicy GenerateCorsPolicy()
        {
            var corsBuilder = new CorsPolicyBuilder();
            corsBuilder.AllowAnyHeader();
            corsBuilder.AllowAnyMethod();
            corsBuilder.AllowAnyOrigin();
            return corsBuilder.Build();
        }

Добавление политики в контейнер

            services.AddCors(
                options =>
                {
                    options.AddPolicy("AllowAllOrigins", GenerateCorsPolicy());
                });

Указание серверу Identity Server использовать эту политику:

                        options.Events.RaiseErrorEvents = true;
                        options.Events.RaiseInformationEvents = true;
                        options.Events.RaiseFailureEvents = true;
                        options.Events.RaiseSuccessEvents = true;
                        options.Cors.CorsPolicyName = "AllowAllOrigins";

Настройка остальных приложение также использует эту политику:

            app.UseRouting();

            app.UseIdentityServer();

            app.UseAuthorization();

            app.UseEndpoints(
                endpoints =>
                {
                    endpoints.MapControllers();
                    endpoints.MapRazorPages();
                    endpoints.MapControllerRoute(
                        name: "default",
                        pattern: "{controller=Home}/{action=Index}/{id?}");
                });
            app.UseStaticFiles();

            app.UseCors("AllowAllOrigins");

Заголовок не установлен: введите описание изображения здесь

1 Ответ

0 голосов
/ 01 августа 2020

Вы управляете CORS в IdentityServer отдельно, используя свойство AllowedCorsOrigins в определениях клиента:

        AllowedCorsOrigins =
        {
            "https://localhost:5001"
        }

Ваш конвейер тоже выглядит немного странно:

        app.UseStaticFiles();
        app.UseCors("AllowAllOrigins");

Я не увидеть любую причину для добавления промежуточного программного обеспечения после промежуточного программного обеспечения UseEndpoints в вашем случае.

Конвейер выглядит так, и ваш входящий запрос проходит через этот конвейер, и каждое промежуточное программное обеспечение может выполнять действия по запросу, это выглядит следующим образом:

введите описание изображения здесь

...