使用 OfficeDev/office-js-helpers 而不是 adal 进行身份验证

Authenticating using OfficeDev/office-js-helpers rather than adal

我正在开发当前使用 adal 获取身份验证令牌的 Office 加载项。

因为我想使用 Fabric 前端,所以我将其更改为 React,并且我注意到 officer-js-helpers 已经实现了似乎与 adal 库执行相同工作的身份验证器。 我的这个假设是否正确?如果是这样,我如何使用 office-js-helpers 身份验证功能复制此 adal 配置:

var adalConfig = {
    instance: 'https://login.microsoftonline.com/',
    tenant: 'myprivatesite.onmicrosoft.com',
    clientId: 'xxx-xxx-xxx-xxx-xxx',
    endpoints: {
      'https://my.private.url.endpoint/path': 'https://myprivatesite.onmicrosoft.com/path.to.something',
    }

此令牌请求:

var authContext = new AuthenticationContext(adalConfig);
 authContext.acquireToken('https://myprivatesite.onmicrosoft.com/path.to.something', function (error, token) {
        console.log(token)
      });

更新: 我的 React 应用程序中有 adal.js 库。我使用了 adalAuthenticationService angular 提供程序中 init 函数的一些代码来检索身份验证令牌。

所以问题依然存在。我可以使用 office-js-helpers 做同样的事情吗?

Adal.js 不能直接用于 Web 插件身份验证,因为在 Web 插件的沙盒 iFrame 上下文中,您无法简单地导航到域外托管的身份验证登录页面。

Office-js-helpers 在可用时使用 dialogAPI,在不可用时使用弹出窗口作为后备解决方案。

如果我没记错的话,Office-js-helpers 仅针对 Azure AD v2.0(与 Azure AD 相比,它具有许多不错的新功能)。我想这是个不错的选择。

我创建了一个 Open source sample 文档,您可能会感兴趣。但是,这并不是您想要的,它是基于 AuthorizationCode 流程的,而您正在寻找隐式流程。

OK 看来非常简单。 adal 配置所需的只是客户端 ID 和租户。

if (OfficeHelpers.Authenticator.isAuthDialog()) {
  return;
}

var authenticator = new OfficeHelpers.Authenticator();

authenticator.endpoints.registerAzureADAuth('xxx-xxx-xxx-xxx-xxx', //clientId
'myprivatesite.onmicrosoft.com' // tenant
);

authenticator.authenticate(OfficeHelpers.DefaultEndpoints.AzureAD)
  .then(function (token) {
    console.log(token);
  .catch(function(error) {
    console.log(error);
  });