У меня есть приложение 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.