gpt4 book ai didi

azure - 访问 Skype for Business API (UCWA) : HTTP 403/Forbidden

转载 作者:行者123 更新时间:2023-12-03 03:04:14 25 4
gpt4 key购买 nike

我正在尝试连接并使用 Skype for Business API (UCWA) following this procedure ,使用 Node.js 测试脚本。

我已在 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/Forbidden

还有一个额外有趣的响应 header :

'x-ms-diagnostics': '28070;source="AM41E00EDG01.infra.lync.com";reason="Service does not allow a cross domain request from this origin."'

...但我还是不明白为什么会出现这个错误。

我尝试过在各种代码示例(X-Ms-OriginHost)中随处可见的附加 header ,但没有运气。

最佳答案

此问题(服务不允许来自此源的跨域请求。)主要是由“跨源资源共享 (CORS)”引起的,并且请求访问的地址未列入“白名单”。

当服务器位于本地时,Skype for Business 管理员可以通过(更多信息 here )进行配置(请参阅 StackOverflow 问题 here ):

$x = New-CsWebOrigin -Url "https://apps.contoso.com"
Set-CsWebServiceConfiguration -Identity "{YOUR_IDENTITY}" -CrossDomainAuthorizationList @{Add=$x}

但是,由于您的 Skype for Business 不在本地(在线),我认为您无能为力,因为此部分主要由 Microsoft 的云管理员控制。

但是,由于 UCWA 支持 Skype for Business Online,我认为您这边有问题。您是否按照说明检查了应用程序是否已正确注册 here ?如果是,fiddler 跟踪可能有助于查看导致该问题的原因。

关于azure - 访问 Skype for Business API (UCWA) : HTTP 403/Forbidden,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46036409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com