Отправьте запрос, возвращающий 403 при попытке вызвать API / пользователей управления IBM AppID - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь создать пользовательский интерфейс 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 - Запрещено, но если он получает токен доступа IAM напрямую через оболочку ibmcloud (ia oauth-токены ibmcloud), он работает нормально.

Кто-нибудь знает, почему это происходит? Я точно знаю, что сгенерированный токеном доступа IAM Token Manager токен работает, потому что я использую его для получения идентификатора пользователя с тем же кодом.

Когда что-то не так с моим токеном доступа, обычно это возвращает «Несанкционированный», а не «Запрещенный».

Понятия не имею, почему это происходит.

Заранее спасибо.

1 Ответ

0 голосов
/ 31 марта 2020

При передаче токена IAM в заголовках идентификатор приложения ожидает, что ему будет предшествовать строка «Носитель»:

var headers = 
{
    'accept': 'application/json',
    'Authorization': 'Bearer ' + token,
    'Content-Type': 'application/json'
};
...