Как реализовать междоменный запрос для аутентификации входа в Office 365 OAuth2? - PullRequest
7 голосов
/ 24 сентября 2019

Я использовал аутентификацию входа в Office 365 OAuth2 для API ядра ASP.NET.Это работает нормально при доступе к этому API напрямую из браузера.Но когда я вызываю этот API из ajax-запроса / другого веб-приложения, произошла ошибка политики 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();
})); 

Configure:

app.UseCors("CorsPolicy");

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

Пожалуйста, предложите мне стандартный способ реализации перекрестного происхождения и перенаправления на соответствующиеклиентское приложение (http://localhost:5000) URL-адрес после получения авторизации от Office 365?

Примечание: При перенаправлении с API на имя входа Microsoft в качестве «origin» становится «null».

1 Ответ

0 голосов
/ 25 сентября 2019

Сервер должен разрешить учетные данные.Чтобы разрешить перекрестные учетные данные, вызовите AllowCredentials:

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