1

我正在尝试在我的应用程序中创建自定义 IBM AppID Management Api 接口。为此,我使用 IBM IAM Token Manager 库来获取 IAM 访问令牌。

const itm = require('@ibm-functions/iam-token-manager')
const m = new itm({
    "iamApiKey": apiKey
})
m.getAuthHeader().then(token => {
    console.log("this one won't work", token)
}

var headers = 
{
    'accept': 'application/json',
    'Authorization': token,
    'Content-Type': 'application/json'
};
var options = 
{
    url: replacedIssUrl+"/users",
    method: 'POST',
    headers: headers,
    body: dataString
};
function callback(error, response, body) {
    console.log(response)
    if (!error && response.statusCode == 200) {
        console.log(body); //returns "body: "Forbidden"
    }
}
request(options, callback)

每当我尝试使用库生成的令牌预注册用户时,回调返回状态 403 - 禁止,但如果它直接通过 ibmcloud shell (ibmcloud iam oauth-tokens) 获取 IAM 访问令牌,它工作正常。

有人知道为什么会这样吗?我知道 IAM 令牌管理器库生成的访问令牌正在工作,因为我正在使用它来获取相同代码上的用户 ID。

当我的访问令牌出现问题时,它通常返回“未经授权”,而不是“禁止”。

我不知道为什么会这样。

提前致谢。

4

1 回答 1

0

在标头中传递 IAM 令牌时,App ID 期望它前面有“Bearer”字符串:

var headers = 
{
    'accept': 'application/json',
    'Authorization': 'Bearer ' + token,
    'Content-Type': 'application/json'
};
于 2020-03-30T22:28:59.000 回答