6

Я добавляю аутентификацию ADFS на веб-сайт Angular SPA с задним концом WebApi. Для этого я настроил экземпляр ADFS с клиентом и RP.ADFS 3 OAuth 2 Ошибка CORS

Для входа в SPA пользователь перенаправляется в конечную точку sts.domain/adfs/oauth2/authorize. Пользователь аутентифицируется на веб-странице и перенаправляется на страницу в приложении - www.domain/token/redirect.html? Code = SOMECODE & state = URL

Эта страница извлекает токен из параметров URL и вызывает sts .domain/adfs/oauth2/token endpoint, чтобы получить токен JWT для задней части WebApi.

var url = "https://sts.domain/adfs/oauth2/token"; 
$.ajax(url, { 
type: "POST", 
data: { 
grant_type: "authorization_code", 
client_id: client, 
redirect_uri: redirect, 
code: token 
} 
}) 

Приложение затем сохраняет WebAPI маркера и добавляет его к Угловой $ http.defaults.headers.common.Authorization так, что он будет использоваться для связи с WebAPI бэкэндом. Затем он перенаправляется обратно в SPA.

Это все работает корректно в IE, но в Firefox и Chrome не удается выполнить стандартное сообщение об ошибке CORS при вызове конечной точки OAuth.

Нет заголовка «Контроль доступа-Разрешить-Происхождение» присутствует на запрошенном ресурсе. Origin 'https://www.domain', следовательно, не допускается.

Похоже, что я должен добавить URL-адрес SPA к конфигурации CORS экземпляра ADFS, но я не могу найти способ настройки конфигурации CORS для экземпляра ADFS. Как настроить CORS в ADFS 3.0 OAuth? Есть ли другой способ выполнить эту задачу, более стандартную?

+0

Вы настроили поддержку Cors в вашем webapi-сервере? Я был бы очень удивлен, если бы это требовало изменения в adfs. – DavidEdwards

ответ

2

У меня была та же проблема. Согласно this, Microsoft не получает доступ к токену доступа с клиентской стороны. Следовательно, я решил this решить проблему. В принципе, создайте вызов в конце WebAPI, чтобы получить токен доступа, передав код авторизации.

+0

Спасибо за решение –

Смежные вопросы