我正在尝试从用 Node.js 编写的 IBM Cloud Function 访问托管在 botshop.cloudappsportal.com 上的 Sharepoint 文件中的一些表数据。
我可以在站点上访问 Sharepoint 的 REST API,但身份验证失败。我的理解是,Sharepoint 使用了一些复杂的 Microsoft 身份验证。
这是 Node.js 代码,
const request = require('request-promise');
function main(params) {
var options = {
uri: "http://xxx.botshop.cloudappsportal.com/_api/web/lists/getbytitle('myfile')/items",
method: 'GET',
auth: {
'user': 'myuser@botshop.cloudappsportal.com',
'pass': 'password'
}
}
return request.get(options).then(response => {
return response;
});
}
exports.main = main;
在提示输入用户/密码后,我可以从浏览器访问 URL。
我还可以使用 NTCredentials 类从 Java 访问它。
HttpGet request = new HttpGet("http://xxx.botshop.cloudappsportal.com/_api/web/lists/getbytitle('myfile')/items");
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 1000);
HttpConnectionParams.setSoTimeout(httpParams, 1000);
DefaultHttpClient client = new DefaultHttpClient(httpParams);
client.getCredentialsProvider().setCredentials(
new AuthScope(AuthScope.ANY),
new NTCredentials("myuser@botshop.cloudappsportal.com", "password", "", ""));
HttpResponse response = client.execute(request);
普通的 UsernamePasswordCredentials 在 Java 中不起作用,因此我需要 Node.js 中的 NTCredentials 等效项(在 IBM Cloud Functions 中工作)。有任何想法吗?
同样有点奇怪的是,域的额外参数只是 "" "" 起作用,所以奇怪的是,当它不传递任何额外的有用数据时,它需要 NTCredentials。