Перенаправление вызова .NET Core OIDC не работает с интерфейсом AngularC#

Место общения программистов C#
Anonymous
Перенаправление вызова .NET Core OIDC не работает с интерфейсом Angular

Сообщение Anonymous »

Я пытаюсь реализовать бэкэнд/бэкэнд токенов для шаблона внешнего интерфейса (мой интерфейс — Angular v18). Я хочу, чтобы мой интерфейс был тупым и не имел никаких знаний об обработке токенов. У меня есть веб-API ASP.NET Core 8, который настраивает конфигурацию OIDC следующим образом:

Код: Выделить всё

//... other code removed for brevity
builder.Services.AddAuthentication.AddOpenIdConnect(
OpenIdConnectDefaults.AuthenticationScheme,
opts =>
{
opts.Authority = builder.Configuration["Authority"];
opts.ClientId = builder.Configuration["ClientId"];
opts.ClientSecret = builder.Configuration["ClientSecret"];
opts.CallbackPath = "/signin-oidc";
opts.ResponseType = "code";
opts.UsePkce = true;

if (builder.Environment.IsDevelopment())
{
opts.RequireHttpsMetadata = false;
}

opts.GetClaimsFromUserInfoEndpoint = true;
opts.ClaimActions.MapAll();

});
С помощью следующего промежуточного программного обеспечения, которое проверяет наличие определенного файла cookie, который, если он отсутствует, инициирует запрос:

Код: Выделить всё

app.Use(
async (context, next) =>
{
if (!context.Request.Cookies.ContainsKey(AuthConstants.CookieSessionKey))
{
await context.ChallengeAsync(OpenIdConnectDefaults.AuthenticationScheme);
}
else
{
await next.Invoke(context);
}
});
Весь процесс работает, если я вызываю конечную точку в своем API непосредственно из браузера, но НЕ, если я пытаюсь вызвать ее из приложения Angular, например:

Код: Выделить всё

this.http.get("https://localhost:7030/.well-known/bff-getsessioninfo")
.subscribe(resp => {
console.log(resp);
})
Вместо этого серверная часть возвращает 200, и Angular пытается десериализовать ответ, но ему это не удается, поскольку это HTML-код страницы входа в IdP

Синтаксическая ошибка: неожиданный токен '

Подробнее здесь: https://stackoverflow.com/questions/788 ... r-frontend

Вернуться в «C#»