【发布时间】:2017-10-31 19:36:43
【问题描述】:
我正在尝试创建一个单页 Web 应用程序,该应用程序通过 Azure AD 使用 Dynamics 365 for Operations 进行身份验证。我已按照所有说明在 Azure AD 和 Dynamics 365 中注册我的应用程序。但是,当我在 D365 中向 OData 端点发出请求时,我已成功通过 Azure AD 进行身份验证并在我的应用程序中使用 adal javascript 库收到了有效令牌,我收到 401 错误。我通过 Azure AD 进行了身份验证,并且我在身份验证标头中传递了我的令牌,所以我无法弄清楚为什么我会收到身份验证错误,除非我没有正确设置我的授权标头?这是我的要求:
//Function that actually retrieves the accounts
function retrieveAccounts(error, token) {
// Handle ADAL Errors.
if (error || !token) {
errorMessage.textContent = 'ADAL error occurred: ' + error;
return;
}
var req = new XMLHttpRequest()
req.open("GET", encodeURI(organizationURI + "/data/Projects"), true);
//Set Bearer token
req.setRequestHeader("Authorization", "Bearer" + token);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.onreadystatechange = function () {
if (this.readyState == 4 /* complete */) {
req.onreadystatechange = null;
if (this.status == 200) {
var projects = JSON.parse(this.response).value;
renderProjects(projects);
}
else {
var error = JSON.parse(this.response).error;
console.log(error.message);
errorMessage.textContent = error.message;
}
}
};
req.send();
}
任何想法将不胜感激!我能够通过使用 Web api 的 Dynamics 365 CRM 成功地做到这一点,所以我假设它也适用于操作,即使设置有点不同。
【问题讨论】:
-
嗨,乔希-很好,是的,你是对的。这实际上是代码块中的复制和粘贴错误。你确实需要空间。但是,我后来了解到,D365-Ops 还不支持这种身份验证方法(JavaScript)。 CORS 存在问题,导致调用失败。
标签: azure authentication microsoft-dynamics operations dynamics-365