IdentityServer4 CORS - PullRequest
       9

IdentityServer4 CORS

0 голосов
/ 06 сентября 2018

У меня есть приложение node.js с vue.js, использующее axios для вызовов Http. Я пытаюсь пройти аутентификацию через новый IdentityServer4. Мой клиент-сервер делает звонок usign axios:

axios.post(`${API_AUTH}/connect/token`, form)
    .then(response => {
      console.log(response.data)
      resolve(response.data)
    })
    .catch(err => {
      reject(err)
    })

В классе запуска моего IdentityServer

public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors(options =>
        {
            options.AddPolicy("CorsPolicy",
                builder => builder.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader()
                .AllowCredentials());
        });

        var cors = new DefaultCorsPolicyService(_logger)
        {
            AllowAll = true
        };

        services.AddSingleton<ICorsPolicyService>(cors);

        services.AddIdentityServer(options =>
        {
            options.InputLengthRestrictions.Password = 255;
        })
            .AddDeveloperSigningCredential()
            .AddInMemoryIdentityResources(Config.GetIdentityResources())
            .AddInMemoryApiResources(Config.GetApiResources())
            .AddInMemoryClients(Config.GetClients())
            .Services.AddTransient<IResourceOwnerPasswordValidator, ResourceOwnerPasswordValidator>();
    }

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseCors("CorsPolicy");

        app.UseIdentityServer();
    }

А также я попытался настроить своих клиентов так:

public static IEnumerable<Client> GetClients()
    {
        return new List<Client>
        {
            new Client
            {
                ClientId = "ClientId ",
                ClientName = "ClientName ",
                AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
                AllowOfflineAccess = true,
                ClientSecrets =
                {
                    new Secret("123423412341243214".Sha256())
                },
                AllowedCorsOrigins = { "http://127.0.0.1:8080", "http://localhost:8080" },
                AllowedScopes = new List<string>
                {
                    IdentityServerConstants.StandardScopes.OfflineAccess,
                    IdentityServerConstants.StandardScopes.OpenId,
                    IdentityServerConstants.StandardScopes.Profile,
                    IdentityServerConstants.ClaimValueTypes.Json,
                    "Abc",
                    "Abcd"
                }
            }
        };
    }

Но когда я пытаюсь позвонить http://localhost:5000/connect/token, я получаю: На запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Источник 'http://127.0.0.1:8080', следовательно, не имеет доступа. Ответ имеет HTTP-код состояния 400.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...