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

时间:2016-11-18 09:58:14

标签: javascript adal office-addins office-js adal.js

我正在使用当前使用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)
      });

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

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

2 个答案:

答案 0 :(得分:2)

Adal.js不能用于Web加载项身份验证,因为在Web加载项的沙盒iFrame上下文中,您无法仅导航到域外托管的身份验证登录页面。

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

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

我创建了一个Open source sample文档可能会让您感兴趣。但是,当您查找隐式流时,这并不是您希望它基于AuthorizationCode流的。

答案 1 :(得分:0)

好的,看起来非常简单。 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);
  });