Отправка запроса, возвращающая 403 при попытке вызвать IBM AppID Management API / пользователей
Я пытаюсь создать в своем приложении пользовательский интерфейс 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)
Всякий раз, когда я пытаюсь предварительно зарегистрировать пользователя с помощью токена, сгенерированного библиотекой, обратный вызов возвращает Status 403 - Forbidden, но если он получает токен доступа IAM напрямую через оболочку ibmcloud (ibmcloud iam oauth-tokens), он работает нормально.
Кто-нибудь знает, почему это происходит? Я точно знаю, что токен доступа, созданный библиотекой IAM Token Manager, работает, потому что я использую его для получения идентификатора пользователя в том же коде.
Когда что-то не так с моим токеном доступа, он обычно возвращает "Неавторизовано", а не "Запрещено".
Я понятия не имею, почему это происходит.
Заранее спасибо.
1 ответ
При передаче токена IAM в заголовках App ID ожидает, что ему будет предшествовать строка Bearer:
var headers =
{
'accept': 'application/json',
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
};