Ошибка `` недопустимая подпись '' для токена доступа (Azure Active Directory / msal js)
Я использовал MSAL JS для аутентификации пользователя и последующего вызова acquTokenPopup(scopes) для токена доступа.
Я получаю токен доступа, но не могу его использовать, поскольку в нем написано " Недействительная подпись". (тоже проверил в jwt.io - та же ошибка)
На форуме я обнаружил, что это связано с тем, что Graph добавляет nonce. Какое будет решение? Пожалуйста помоги.
Ниже приведен код.
tenantConfig = {
scopes: ["directory.read.all"]
};
this.clientApplication.acquireTokenSilent(this.tenantConfig.scopes).then (function (accessToken) {
},
function (error) {
console.log(error);
this.clientApplication
.acquireTokenPopup(this.tenantConfig.scopes)
.then(
function (accessToken) {
console.log("access token " + accessToken);
},
function (error) {
alert(error);
}
);
}
);
2 ответа
Ваш параметр scopes должен быть "[CLIENT_ID]/. Default". При использовании MSAL.js и если вы не используете api графика:
var requestObj = {
scopes:["[CLIENT_ID]/.default"]
};
Если вы намереваетесь использовать api графика, параметр scopes будет другим:
var ResourceId = "https://graph.windows.net/";
var scopes = [ ResourceId + "Directory.Read", ResourceID + "Directory.Write"];
Пример здесь https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-javascript-spa использует api графика и генерирует конкретный токен для api графика, измените параметр scopes, если вы необходимо сгенерировать токен доступа для других целей.
Дополнительная информация о параметре scopes: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-v1-app-scopes
Это не имеет значения. Просто измените алгоритм наHS256
в jwt.io, тогда подпись будет проверена.
Токен доступа должен быть в порядке. Просто убедитесь, что вы добавили разрешение Diretory.Read.All на портал Azure и предоставили согласие администратора.
Ссылка:
Вызов Graph API из одностраничного приложения JavaScript с использованием msal.js