如何为Office 365 OAuth2登录身份验证实现跨域请求?

问题描述 投票:7回答:1

我已经将Office 365 OAuth2登录身份验证用于ASP.NET Core API。直接从浏览器访问此API时,此方法工作正常。但是,当我从ajax请求/其他Web应用程序调用此API时,发生以下Cors策略错误。

Access to XMLHttpRequest at 'https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?client_id=e0745314-9236-4fr2c-a2fg0-c19cjfsfrrrb6b&scope=api%3A%2F%2Fe0745314-9236-4fr2c-a2fg0-c19cjfsfrrrb6b%2Ftestapi&response_type=code&redirect_uri=https%3A%2F%2Flocalhost%3A44332%2Fsignin-oidc&state=CfDJ8Kp1w7Ui3OZMswaNrHvqNR2MF9qKa9w3PILEMBv8s_zxSa3sMK1pQLr2EuNexhz8eM6
iDdbO2ciuxInNPCtbO1KJ31O_zXvOA_sMXHbAhzzkXKN9QDmrHMUOiQQdjXjam4EqKlopDpcE2vUxcus
4WehJCUfCqdQZjMuzZS7ovrxslRX2ueRNFqpSDichJCf_iduXgFV1bNLRM8gK0TmjUrdkdYtyji7BNsNdPP
o9Fhad' (redirected from 'https://localhost:44332/api/login/account') **from origin 'null'** has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我已尝试在启动文件中使用以下方法解决此问题。但是,仍然有这个问题。

ConfigureServices:

services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
})); 

配置:

app.UseCors("CorsPolicy");

**Client Application** : http://localhost:5000  
**API** : http://localhost:44332  
**Login provider** : Office 365

[请向我建议从Office 365获得授权后实现跨源和重定向到相应客户端应用程序(http://localhost:5000)URL的标准方法?

注意:从API重定向到Microsoft登录名“源”时变为“空”。

authentication .net-core oauth azure-active-directory
1个回答
0
投票

服务器必须允许凭据。要允许跨域凭据,请调用AllowCredentials:

services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
})); 
© www.soinside.com 2019 - 2024. All rights reserved.