Использование Keycloak для защиты надстройки Outlook JavaScript - PullRequest
0 голосов
/ 17 апреля 2020

У нас есть надстройка Outlook Javascript, которая: a. открывает I-кадр области задач, который покажет страницу HTML (с некоторыми функциями JS) b. Страница будет иметь JS функций, которые будут выполнять HTTP-вызовы веб-API, который защищен Keycloak; т. е. для каждого вызова API требуется отправка JWT в заголовке «Аутентификация». c. Эта надстройка доступна в приложении Desktop Outlook, а также в приложении OutlookOnTheWeb в браузере Inte rnet.

Моей первоначальной реализацией было использование клиентского адаптера Javascript от Keycloak, так как будет использовать куки Keycloak. В частности, разрешите извлечение JWT токена доступа без явной отправки кредитов);

Мой главный вопрос: предназначен ли адаптер JS для работы в этом сценарии? Кто-нибудь успешно реализовал адаптер JS в надстройке Outlook JS? (если это так, с какими версиями Keycloak и Outlook)

Я столкнулся с двумя проблемами блокировки ниже. Кто-нибудь сможет сказать, связано ли это с ошибкой, предполагаемым поведением или неправильной реализацией с моей стороны?

Спасибо!

Проблема № 1: Desktop Outlook не может использовать адаптер в качестве MS Add -In явно не поддерживает «window.history.replace».

Поток кода, который выдает ошибку: 1. При начальной загрузке страницы панели задач HTML она вызывает «keycloak.init» (с «login-»). обязательный вариант). 2. В «init» страница перенаправляется на страницу входа в Keycloak. 3. Пользователь вводит кредиты. 4. HTML страница перенаправляется обратно на исходную страницу; который затем вызывает «keycloak.init» при загрузке. 5. Когда приведенный ниже код выполняется в «init», возникает ошибка «Object is null», так как библиотека Add-In JS (т. Е. Office. js) устанавливает «window.replaceState» в значение null.

            if (callback) {
                window.history.replaceState(window.history.state, null, callback.newUrl);
            }

Проблема №2: странице OutlookOnTheWeb не удается загрузить адаптер Keycloak JS, поскольку на странице входа в Keycloak установлено «Директива политики безопасности содержимого», для которой задано значение «frame-ancestors 'self" ». Таким образом, страница Keycloak не предназначен для отображения в I-кадре.

...