Приложение Azure API с безопасностью OAuth не принимает accesToken

Во-первых, я НЕ использую управление API. У меня просто есть приложение API dot net core, размещенное в Azure. Теперь я хочу защитить приложение токенами носителя (OAuth). По какой-то причине я могу включать и выключать аутентификацию/авторизацию, но при этом вызов API перенаправляет меня на страницу входа в систему при обновлении из Chrome.

Итак, мой сайт размещен на www.a.com, а конечная точка API обслуживается на www.b.com (сайты, размещенные на Azure). Chrome выполняет предварительную проверку для приложения API, а Azure отвечает перенаправлением.

Моя установка на самом деле довольно проста и стандартна. У меня есть внешний интерфейс VueJS, размещенный как статический сайт, который использует azure AD для входа в систему. После успешного входа в систему я также хочу вызвать API, размещенный в Azure. Этот API должен быть безопасным. Почему-то я не могу заставить эту довольно простую конфигурацию работать.

Я зарегистрировал приложения в Azure, создал области и дал согласие администратора веб-клиента vuejs на области, определенные в приложении API, но я не могу использовать токен доступа из веб-клиента для вызова API из приложения API.

Есть ли кто-нибудь, кто может помочь?

Приветствую и благодарю

Джон.


person John Gorter    schedule 13.12.2019    source источник
comment
На самом деле мой вопрос довольно прост. У меня есть веб-сайт, размещенный на VueJS cdn, который вызывает приложение API, размещенное в Azure (другой домен). Я хочу предоставить безопасный API. Из-за проблем с CORS есть предварительный запрос. Этот фактический запрос отвечает перенаправлением 302 на страницу входа :-/ У меня уже есть токен, я хочу продолжить выполнять фактический запрос с токеном доступа.....   -  person John Gorter    schedule 13.12.2019


Ответы (1)


Вы можете хранить токен аутентификации JWT в cookie/localStorage промежуточного домена, подключенного к домашней странице с помощью iframe.

1. Чтобы аутентифицировать пользователя в example1.com, перенаправить его на сервер аутентификации в sso.example.com, выполнить JWT после аутентификации и сохранить его в localStorage этого домена. После этого перенаправьте пользователя на исходный домен example1.com.

2. Создайте iframe в example2.com, указывающий на sso.example.com. iframe в sso.example.com считывает токен JWT и отправляет сообщение на родительскую страницу.

3. Родительская страница получает сообщение и прикрепленный токен, продолжая поток единого входа.

Чтобы упростить разработку, мы недавно выпустили междоменную систему единого входа с JWT по адресу https://github.com/Aralink/ssojwt

Дополнительные сведения см. в этой статье.

person Joey Cai    schedule 17.12.2019