带有单页App的MSALjs使得无法调试

问题描述 投票:0回答:1

我不确定如何简洁地解释这一点,第一部分,隐式流程。我不完全了解隐式流是什么。我没有把它简化成一个句子。我不知道这是一种设计模式还是一种处理令牌的方式。

使用基本的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);
        };
};

这些iFrame只是坐在这里并定期刷新,大概是获得了新令牌,或者使其在另一端保持活动状态。 (在chrome调试器中,每次刷新使我进入Sources选项卡时,这几乎使调试变得不可能。)

enter image description here

而且,想知道为什么在使用图范围而不是应用范围时会引发跨站点cookie错误。

enter image description here

很好奇为什么关闭了,似乎仍然存在。

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

single-page-application msal.js
1个回答
0
投票

隐式流程是OAuth中获取令牌的流程之一,特别适合单页应用程序,因为它不需要服务器组件。如您所见,它使用iframe获取令牌。您可以在此处阅读有关隐式流的更多信息:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-implicit-grant-flow

SameSite cookie警告是预期的,因为有意在login.microsoftonline.com上保留了一些cookie,而没有SameSite属性。身份验证所需的所有login.microsoftonline.com cookie已更新。您可以在此处了解更多信息:https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-handle-samesite-cookie-changes-chrome-browser?tabs=dotnet

对于问题697,v1.2.0中已解决了在隐藏的iframe中重新加载应用程序的主要问题,该问题现在允许您指定不包含MSAL或任何其他内容的页面(例如,空白html页面)作为重定向URI,可减轻在iframe / popup中重新加载应用程序的性能开销。您还可以为每个请求设置重定向URI,以防您需要与配置中设置的URL不同的URI。

并且如果您发现iframe难以调试,请知道我们正在使用该库的新版本,它将使用带有PKCE的身份验证代码流(而不是隐式流)来获取令牌,该令牌将使用CORS http请求获取令牌,而不是iframe。我们计划在本月提供该功能。

© www.soinside.com 2019 - 2024. All rights reserved.