C# Asp.Net核心&x2B;角度SPA+;从客户端块UI触发的对ADFS的本地ADFS跨源请求
我已经在我的Asp.net Core+Angular 5单页应用程序上设置了内部ADFS身份验证。身份验证是在Asp.Net的Web API和MVC控制器级别上完成的。Angular 5应用程序嵌入在index.cshtml中 身份验证在登录和注销时工作得非常好。 但当用户浏览应用程序时,会触发从浏览器到ADF的飞行前请求,这会阻止在此期间发出的post请求。下面是我在浏览器控制台上遇到的错误 加载失败该文的意思是:联邦政府和WTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTvvvvvvvvvvvTvvvvvvvvvvvvvvvvvTvTvTvTvTvTvTvTvTvTvTvTvTvvGvBvBvBvBvBvBvBvvBvvvvBvvvvBvvvBvBvBvBvBvBvBvBvBvBvBvBvBvBvBvBvBvBvBvBvBvBvBvvvvvvvvvvvvvvvv6 6 6 6 6 6 6 6.vvvBvBvBvBvBvBvBvBvBvBvBvBvBvBvBvBvBvBvvv光碟SQr002HvTPuLwktLw1t3-7-:对飞行前请求的响应>未通过访问控制检查:请求的资源上不存在>任何“访问控制允许原点”标头。因此,不允许>访问源“” 请让我知道是否有解决方案。谢谢 下面是在StartUp.cs文件中设置ADFS身份验证的代码C# Asp.Net核心&x2B;角度SPA+;从客户端块UI触发的对ADFS的本地ADFS跨源请求,c#,angular5,asp.net-core-2.0,adfs3.0,C#,Angular5,Asp.net Core 2.0,Adfs3.0,我已经在我的Asp.net Core+Angular 5单页应用程序上设置了内部ADFS身份验证。身份验证是在Asp.Net的Web API和MVC控制器级别上完成的。Angular 5应用程序嵌入在index.cshtml中 身份验证在登录和注销时工作得非常好。 但当用户浏览应用程序时,会触发从浏览器到ADF的飞行前请求,这会阻止在此期间发出的post请求。下面是我在浏览器控制台上遇到的错误 加载失败该文的意思是:联邦政府和WTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTv
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = WsFederationDefaults.AuthenticationScheme;
})
.AddWsFederation(options =>
{
options.Wtrealm = Configuration["wsfed:realm"];
options.MetadataAddress = Configuration["wsfed:metadata"];
}).AddCookie(cookieoption =>
{
cookieoption.Cookie.HttpOnly = true;
cookieoption.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
});
正如错误消息所说,由于原点访问控制策略,飞行前请求失败。您需要启用/设置跨源资源共享(CORS)策略 1.使用Startup.ConfigureServices中的
AddCors
方法创建CORS策略:
public void ConfigureServices(IServiceCollection services)
{
// Add Cors
services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
// Add framework services.
services.AddMvc();
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new CorsAuthorizationFilterFactory("MyPolicy"));
});
...
...
...
}
我强烈建议您了解CORS,并参考我已经建立了CORS。但它仍然不起作用。我正在获取web api方法调用的http状态302。然后会自动触发对ADFS的get请求,从而导致问题。知道为什么返回302吗?设置CORS似乎根本不适用于单页应用程序。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
// Enable Cors
app.UseCors("MyPolicy");
...
...
...
}