CAML-query 到 Sharepoint REST API 结果 "invalid audience URI"?
CAML-query to Sharepoint REST API results in "invalid audience URI"?
我们已经成功使用 Sharepoint REST API 从列表中检索项目一段时间了,但最近才决定集成 ADAL.JS 以便能够访问其他 Microsoft API例如 Graph、Azure AD 等
认证成功后Adal.js自动添加一个
Authorization: Bearer eyJ..
header 到 REST 调用,它在稍微调整权限后工作正常。该应用程序是在 Sharepoint 中托管的 Angular SPA,因此这 header 不是必需的,但并不重要。
但是,我们的一些 REST 调用还要求我们查询分类法,并且由于正常的 Sharepoint REST API 不支持,我们必须点击 (/_api/web/lists/GetByTitle('ListName')/GetItems 端点) 以 CAML-query 作为请求负载,即 https://mydomain.sharepoint.com/sites/dev/_api/web/lists/GetByTitle('News')/GetItems
不幸的是,这并不像 API 简单地 returns
Invalid audience Uri '5exx5cef-x7xx-4xxx-axxx-4xxxx2e40'.
到目前为止,我唯一的解决方案是修改实际的 Adal.JS 库以删除此特定端点的 header。
所以,我的问题是 - 是否有人使用 Adal.JS 或 运行 针对 Sharepoint REST API 对类似问题进行过 CAML-queries 并可以提供任何见解?
我怀疑这是一个配置问题,但有点不知所措。
在这种情况下,您需要强制将端点“https://mydomain.sharepoint.com”设置为空。否则,对 "mydomain.sharepoint.com" 的每个请求都将添加由 SharePoint 服务器验证的图形授权 header。由于该应用程序是在 Azure AD 而不是 SharePoint 上注册的,因此它将被视为无效受众。
这是供您参考的解决方法,请让我知道它是否适合您。
(function () {
angular.module('app', [
'ngRoute',
'AdalAngular'
]).config(config);
// Configure the routes.
function config($routeProvider, $httpProvider, adalAuthenticationServiceProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainController',
controllerAs: 'main'
})
.otherwise({
redirectTo: '/'
});
// Initialize the ADAL provider with your clientID (found in the Azure Management Portal) and the API URL (to enable CORS requests).
adalAuthenticationServiceProvider.init(
{
clientId: clientId,
// The endpoints here are resources for ADAL to get tokens for.
endpoints: {
'https://graph.microsoft.com': 'https://graph.microsoft.com',
'https://mydomain.sharepoint.com': null
}
},
$httpProvider
);
};
})();
我们已经成功使用 Sharepoint REST API 从列表中检索项目一段时间了,但最近才决定集成 ADAL.JS 以便能够访问其他 Microsoft API例如 Graph、Azure AD 等
认证成功后Adal.js自动添加一个
Authorization: Bearer eyJ..
header 到 REST 调用,它在稍微调整权限后工作正常。该应用程序是在 Sharepoint 中托管的 Angular SPA,因此这 header 不是必需的,但并不重要。
但是,我们的一些 REST 调用还要求我们查询分类法,并且由于正常的 Sharepoint REST API 不支持,我们必须点击 (/_api/web/lists/GetByTitle('ListName')/GetItems 端点) 以 CAML-query 作为请求负载,即 https://mydomain.sharepoint.com/sites/dev/_api/web/lists/GetByTitle('News')/GetItems
不幸的是,这并不像 API 简单地 returns
Invalid audience Uri '5exx5cef-x7xx-4xxx-axxx-4xxxx2e40'.
到目前为止,我唯一的解决方案是修改实际的 Adal.JS 库以删除此特定端点的 header。
所以,我的问题是 - 是否有人使用 Adal.JS 或 运行 针对 Sharepoint REST API 对类似问题进行过 CAML-queries 并可以提供任何见解?
我怀疑这是一个配置问题,但有点不知所措。
在这种情况下,您需要强制将端点“https://mydomain.sharepoint.com”设置为空。否则,对 "mydomain.sharepoint.com" 的每个请求都将添加由 SharePoint 服务器验证的图形授权 header。由于该应用程序是在 Azure AD 而不是 SharePoint 上注册的,因此它将被视为无效受众。
这是供您参考的解决方法,请让我知道它是否适合您。
(function () {
angular.module('app', [
'ngRoute',
'AdalAngular'
]).config(config);
// Configure the routes.
function config($routeProvider, $httpProvider, adalAuthenticationServiceProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainController',
controllerAs: 'main'
})
.otherwise({
redirectTo: '/'
});
// Initialize the ADAL provider with your clientID (found in the Azure Management Portal) and the API URL (to enable CORS requests).
adalAuthenticationServiceProvider.init(
{
clientId: clientId,
// The endpoints here are resources for ADAL to get tokens for.
endpoints: {
'https://graph.microsoft.com': 'https://graph.microsoft.com',
'https://mydomain.sharepoint.com': null
}
},
$httpProvider
);
};
})();