【发布时间】:2021-12-23 16:39:34
【问题描述】:
目前,我正在开发一个将 Angular 构建与 .NET 应用程序集成在一起的应用程序。我使用从 Angular 应用 (Angular msal) 到 Web 服务器的 Azure AD 身份验证。
定位静态网页应用
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/dist";
});
使用水疗中心:
app.UseSpa(spa =>
{
// To learn more about options for serving an Angular SPA from ASP.NET Core,
// see https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});
错误
AADSTS9002326: Cross-origin token redemption is permitted only for the 'Single-Page Application' client-type.
在我开始集成之前,这两个应用程序是独立存在的,并且身份验证运行良好。但由于集成,SPA 现在以 .NET 作为主机作为静态应用程序运行。
现在我怀疑 SPA 不再被识别为 SPA,而只是作为 .NET 应用程序,因此我的身份验证不再有效。
我一直在使用标准指南来集成我的 SPA,并且代码似乎可以按预期工作。只有身份验证不起作用,因为我认为我的应用注册返回 url 不会导致 SPA。
有什么解决办法吗?我可以想象身份验证现在应该在 .NET 托管端工作,但如果我这样做,我可能会丢弃我所有的 msal 实现。我不是在等那个。
注意: 应用程序不再在默认的 Angular 端口 4200 上运行,而是在启动设置中定义的端口上运行。
谢谢。
【问题讨论】:
标签: c# .net angular azure single-page-application