2016-11-18 91 views
2

我正在使用目前使用adal獲取身份驗證令牌的Office加載項。使用OfficeDev/office-js-helpers進行身份驗證而不是adal

因爲我想使用Fabric前端,所以我將其更改爲React,並且我注意到officer-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) 
     }); 

UPDATE:如果是這樣,我怎麼使用辦公JS-傭工認證功能複製該阿達爾配置 我已經拿到了adal.js庫在我的反應應用程序工作。我已使用adalAuthenticationService角提供程序中init函數的一些代碼來檢索身份驗證令牌。

所以問題仍然存在。我可以使用office-js-helpers來做同樣的事情嗎?

回答

0

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); 
    }); 
+0

問題在於誤導您,您正在尋找Office-js-helpers工作的工作代碼。這不是adal.js和office.js助手的比較。其實這個問題與adal.js無關。 –

2

Adal.js無法用於網絡加載項身份驗證,因爲在網絡加載項的沙箱化iFrame上下文中,您無法簡單導航到域外託管的身份驗證登錄頁面。

Office-js-helpers在可用時使用dialogAPI,當不可用時彈出窗口作爲後備解決方案。

如果我沒有記錯的話,Office-js-helpers只針對Azure AD v2.0(它與Azure AD相比有很多不錯的新功能)。我想這是一個不錯的選擇。

我創建了一個Open source sample這個文檔可能對你很有意思。但是,當您正在查找隱式流程時,這不是您想要的基於AuthorizationCode流程。

+0

我不關心這方面 - 我有一個加載項,目前的工作原理和使用現有的辦公室身份驗證來驗證加載項。實際上,如果您已經使用outlook.office.com進行了身份驗證(在我的情況下),那麼加載項將正確啓動。我想知道office-js-helpers在這種情況下是否合適,如果確實可以按照我的方式使用它們。 – Stevo

+1

我不明白你的意見。您說您已經在Outlook中進行了身份驗證,但是您在哪裏獲得請求AzureAD API的承載?必須有第二個驗證流程來檢索不記名令牌(由adal.js執行)。 Office-js-helpers將幫助您在插件上下文中實現OAUTH流程,而不會觸及iFrame /彈出窗口問題。你將不得不重新實現由adal.js像refresh_tokens等 –

+1

處理事情即使你沒有足夠的IFRAME /彈出危機尚未實現您的流量時,那是因爲你可能設置'login.windows.net'爲可信你的清單中的appdomain允許在插件中重定向。但是,在某些情況下,登錄頁面是「公司頁面」,您無法預先知道其域並將其設置在清單中。看到這[博客文章](https://blogs.msdn.microsoft.com/richard_dizeregas_blog/2015/08/10/connecting-to-office-365-from-an-office-add-in/)。現在使用對話框API(由Office-js-helpers使用),在大多數情況下可以避免彈出窗口。 –