1

在 Excel 加载项中,我要求用户使用 Office 帮助程序库针对 Azure AD 应用程序对自己进行身份验证。加载项启动时,我调用 Authenticator 实例的“身份验证”功能,它打开登录对话框并完成登录过程没有问题,问题是当重定向返回令牌时,身份验证器没有从 Href 检索信息并关闭对话框,而不是卡在空白页面窗口中。

我正在使用版本:来自 CDN 的 Office Helpers 1.0.2

这是代码:

 /// register Azure AD 1.0 endpoint using
    authenticator.endpoints.registerAzureADAuth(clientId, tenant, {
        responseType: 'token',
        redirectUrl: window.location.origin + "/Home.html",
        resource: resourceId
    });

    // First Login
    authenticator
        .authenticate(OfficeHelpers.DefaultEndpoints.AzureAD)
        .then(function (row_token) {
            // Azure Token 
            var token = new AccessToken(row_token.access_token, row_token.expires_at, row_token.expires_in, row_token.provider, row_token.session_state, row_token.state, row_token.token_type);
            var decoded_token = jwt_decode(row_token.access_token)
            client_email = decoded_token.upn;
            Office.context.document.settings.set("client_email", decoded_token.upn);
            access_token = row_token.access_token;
            Office.context.document.settings.set("access_token", row_token.access_token);
            expires_at = row_token.expires_at;
            Office.context.document.settings.set("expires_at", expires_at);
            Office.context.document.settings.saveAsync();
            var expires_in = row_token.expires_at - new Date() - 5000; // 5000 is five seconds before the token expires.
            setTimeout(function () {
                authenticator.tokens.delete(OfficeHelpers.DefaultEndpoints.AzureAD);
                authennticateUser();
            }, expires_in); // recall the current function when the token expires
            active_session = true;
        })
        .catch(errorHandler);  
}

该问题发生在 Office 的最新更新(截至 18/08/2019)之后,微软似乎正式放弃 IE 并考虑使用 Edge,在 IE 上没有问题并且身份验证工作完美,但现在在 Edge 上,如前所述,它失败了。

4

0 回答 0