我正在尝试使用 他们的文档通过他们的 API 对 comodo 平台(合作伙伴门户)进行身份验证。 据我了解,我需要使用用户/通行证进行身份验证才能获得不记名令牌,以便我可以使用他们的 API 端点 问题是,虽然我可以通过邮递员或他们的 swagger-ui 页面甚至他们的网络合作伙伴门户获得身份验证并获取不记名令牌,但我无法通过他们的 API 获得简单的 Google 应用脚本来执行相同的操作。
comodo 的文档显示了这个curl 命令
curl -k -X POST https://partner.cwatch.comodo.com/login -H 'Cache-Control: no-cache' -H 'Content-Type: application/json' -d '{"username":"myuser","password":"mypass" }'
这是我在导入上面的curl命令时从Postman获得的JavaScript代码(运行良好):
var myHeaders = new Headers();
myHeaders.append("Cache-Control", "no-cache");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"username": "myuser",
"password": "mypass"
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://partner.cwatch.comodo.com/login", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
我将其翻译为 Google 应用程序脚本,如下所示:
function getAuthorizationBearerToken() {
var url = "https://partner.cwatch.comodo.com/login"
var myHeaders = {
'Cache-Control': 'no-cache',
'Content-Type': 'application/json'
};
var raw = JSON.stringify({
"username": "myuser",
"password": "mypass"
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow',
muteHttpExceptions: true
};
var response = UrlFetchApp.fetch(url, requestOptions)
Logger.log(response.getContentText())
}
问题是,在我的 Google 应用程序脚本中,我得到的响应是:
{"path":"/login","code":{"code":"E13000","message":"失败消息: {1}"},"message":"失败消息: 登录参数无效!请提供有效的用户名(或电子邮件)和密码。","error":"未经授权","timestamp":1691083985106,"status":401}
在他们的页面上,E13000 代码指的是“JWT Login Filter”,我不知道那是什么。 我的猜测是,不知何故,我通过脚本发送的用户/通行证没有以正确的方式发送到可以被 comodo 视为有效身份验证的程度。