我試圖連接到&使用商用版Skype API(UCWA)following this procedure,使用Node.js的測試腳本。商務API(UCWA)訪問Skype的:HTTP 403 /禁止
我在Azure AD註冊了一個測試應用程序,並檢查了所有與Skype for Business Online有關的權限。
我這樣做(簡化):
var adal = require('adal-node');
var https = require('https');
var clientId = 'a5cbbd......cc4a1'; // = app ID
var clientSecret = 'IOSDk1......LJ6vE=' // test key from Azure AD
var context = new adal.AuthenticationContext('https://login.windows.net');
// 'Autodiscover' step
// (callRestAPI() makes an HTTPS request using https.request() and returns results as JSON)
callRestAPI('webdir.online.lync.com', 443, '/autodiscover/autodiscoverservice.svc/root', 'GET', null /* no specific headers */, function(err, res) {
if (err) { console.log(err); return err; }
// extract discovered domain (I get something like https://webdir1e.online.lync.com)
let regex = new RegExp('^(https?://[^/]*)', 'g');
let sfbDiscoveredDomain = regex.exec(response._links.user.href);
sfbDiscoveredDomain = sfbDiscoveredDomain[1];
// 'Acquire token' step
context.acquireTokenWithClientCredentials(sfbDiscoveredDomain, clientId, clientSecret, function(err, res) {
if (err) { console.log(err); return err; }
regex = new RegExp('^https?://([^/]*)', 'g');
let sfbHost = regex.exec(res.resource);
sfbHost = sfbHost[1]; // here I get something like 'webdir1e.online.lync.com'
// 'Resending an autodiscovery request with the bearer token' step
callRestApi(sfbHost, 443, '/autodiscover/autodiscoverservice.svc/root/oauth/user', 'GET', {'Authorization': 'Bearer '+res.accessToken}, function(err, res) {
if (err) { console.log(err); return err; }
console.log(res);
});
});
});
的最後一步(重新發送的自動發現請求)總是失敗,錯誤HTTP 403 /禁止。
有一個額外的有趣響應頭:
'X-MS-診斷':「28070;源= 「AM41E00EDG01.infra.lync.com」;原因=「服務不允許的橫「
......但我仍然不明白爲什麼會出現此錯誤。
我玩過在各種代碼示例(X-Ms-Origin
和Host
)中看到的附加標題,但沒有運氣。
感謝您的快速回復。但是,按照您的建議,我仔細檢查了註冊和身份驗證所需的所有6個步驟(查看步驟1-2應該在Azure管理中進行,步驟4-6從我的Node.js代碼中進行)。結果總是一樣的(錯誤HTTP 403/Forbidden與'x-ms-diagnostics'有關CORS問題的額外頭文件)。這可能是服務器端的問題嗎? –
是的,正如通過提琴手所提到的,我們將能夠指出它。在那裏你可以看到X-Ms-Origin會有哪些值。也可以在瀏覽器中執行此操作(調出開發工具(F12),清除瀏覽器緩存(ctrl + R),轉到網絡選項卡和「啓動捕獲」)。指向更詳細的設置問題。不過,我認爲Microsoft Azure/Skype for Business Online支持可能是一個更好的選擇,可以幫助我們找到答案。到目前爲止,我會說你的天藍色服務器不允許在線上與Skype for Business交談...... – BastianW