MSAL js с одностраничным приложением делает невозможной отладку - PullRequest
0 голосов
/ 01 марта 2020

Я не уверен, как объяснить это кратко, первая часть, Неявный поток. Я не совсем понимаю, что такое неявный поток. Я не разобрал это в одно предложение. Это не шаблон дизайна или способ обработки токенов, я не знаю.

Работа с довольно простым c JavaScript Одностраничным приложением и реализация Msal версии 1.2.1. Каждый раз, когда msalClient получает токен для области, он оставляет iFrame для обработки обновления токена.

window.msalConfig = {
    auth: {
            clientId: '<clientId>'
            , authority: "https://login.microsoftonline.com/common"
            , validateAuthority: true
            }
    , cache: {
            cacheLocation: "localStorage"
            }
    , graphScope: {
            scopes: ["https://graph.microsoft.com/User.Read", "https://graph.microsoft.com/Mail.Send" ]
            }
    , appScope: {
            scopes: ["<clientId>"]
            }
    ,  appToken:{
            token: null
            }
    ,  graphToken:{
            token: null
            }
}; 

clientApplication = new Msal.UserAgentApplication(window.msalConfig);

function onSignin(idToken) { 
   clientApplication.acquireTokenSilent(window.msalConfig.appScope)
       .then(function (token) {
           window.msalConfig.appToken.token = token;
       }, function (error) {
              clientApplication.acquireTokenPopup(window.msalConfig.appScope).then(function (token) {
              window.msalConfig.appToken.token = token;
           }, function (error) {
              console.log(error);
           });
       });
    getGraphToken();
};

function getGraphToken() {
    clientApplication.acquireTokenSilent(window.msalConfig.graphScope)
        .then(function (token) {
            window.msalConfig.graphToken.token = token;
        }), function (error) {
            console.log(error);
        };
};

Эти iFrames просто сидят здесь и периодически обновляют sh, предположительно получая новый токен или поддерживая его на другом конце. (Когда в отладчике chrome каждый refre sh выводит меня на вкладку Sources, это делает отладку практически невозможной.)

enter image description here

Также , удивляясь, почему межсайтовая готовка ie выдает ошибки при работе с Графикой, а не с Приложением.

enter image description here

Любопытно, почему это закрыто, это все еще, кажется, присутствует.

https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/697

1 Ответ

0 голосов
/ 02 марта 2020

Неявный поток является одним из потоков для получения токенов в OAuth и особенно хорошо подходит для одностраничных приложений, поскольку он не требует серверного компонента. Как вы заметили, он использует фреймы для получения токенов. Вы можете прочитать больше о неявном потоке здесь: https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-implicit-grant-flow

Ожидается предупреждение SameSite cook ie, так как на login.microsoftonline.com были намеренно оставлены некоторые куки без атрибута SameSite. Все файлы cookie для login.microsoftonline.com, необходимые для аутентификации, были обновлены. Вы можете прочитать больше здесь: https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-handle-samesite-cookie-changes-chrome-browser?tabs=dotnet

Для проблемы 697 основная проблема вашего приложения, перезагружаемого в скрытом iframe, была решена в v1.2.0, которая теперь позволяет вам укажите страницу без MSAL или любое другое содержимое (например, пустую страницу html) в качестве URI перенаправления, что снижает нагрузку на производительность при перезагрузке приложения в iframe / popup. Вы также можете установить свой URI перенаправления на запрос, если вам нужен другой URI, который был задан в конфигурации.

И если вам трудно отладить iframes, знайте, что мы работаем над новой версией библиотека, которая будет использовать поток кода аутентификации с PKCE (вместо неявного потока) для получения токенов, который будет использовать HTTP-запросы CORS для получения токенов вместо iframes. Мы планируем сделать это доступным в этом месяце.

...