Я создаю сервер входа в систему, используя Identityserver4. Я использую ASP. net core 3.1 для функциональности и angular 9 проект для обслуживания stati c файлов для экранов входа / регистрации. Проект angular обслуживается из папки wwwroot проекта .netcore.
Чтобы убедиться, что мои маршруты angular работают правильно вместе с маршрутами контроллера, я добавил следующее в моем запуске .cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseCors(Constants.Constants.Policy);
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseIdentityServer();
app.UseWhen(x => !x.Request.Path.Value.StartsWith("/Account"), builder =>
{
builder.Use(async (context, next) => {
await next();
if (context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value))
{
context.Request.Path = "/index.html";
await next();
}
})
.UseDefaultFiles(new DefaultFilesOptions { DefaultFileNames = new List<string>{"index.html"}})
.UseStaticFiles();
});
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Account}/{action=Login}/{id?}");
});
}
Это гарантирует, что когда URL содержит http://localhost: порт / учетная запись / логин , он будет обслуживаться через маршрут контроллера. Все остальные пути URL будут обрабатываться через angular.
Проблема возникает, когда клиентские приложения пытаются получить доступ к http://localhost: порт / .well-known / openid-configuration URL, чтобы получить документы для обнаружения. Поскольку URL-адрес не начинается с «Учетной записи», он обслуживается через angular, т. Е. Он перенаправляется на страницу индекса. html.
Как добавить маршрут .well-known / openid-configuration в мой файл Startup.cs, чтобы он возвращал документ обнаружения?
Ошибка при доступе к IdentityServer из моего клиентского приложения:
Ошибка на веб-странице IdentityServer