Я пытаюсь настроить приложение spa javascript, которое регистрирует пользователя в нашем клиенте azure active directory, а затем извлекает информацию о профиле из графа Microsoft и вызывает функцию azure, написанную в ядре c# (мой API).
У меня настроены отдельные регистрации приложений для моего веб-сайта и API в azure активной директории.
Я использую библиотеку MSAL. js на веб-сайте javascript spa и использую более новые конечные точки microsoft identity / v2.0.
Приложение SPA входит в активный каталог, как и ожидалось, и может использовать токен доступа для вызова графа для получения информации о профиле. В моей функции azure я проверяю токен, и это завершается ошибкой "IDX10511: Проверка подписи не удалась. Ключи пробовали: ....."
Теперь, если я удаляю граф Microsoft из областей при запросе токена я получаю токен, который при передаче в функцию azure отлично проверяется, но я больше не могу получить данные профиля в приложении spa?
Как заставить оба работать?
Стоит также отметить, что я протестировал токены с помощью jwt.io и также не может проверить подпись при использовании графика.
Вот как я получаю свой токен:
var msalConfig = {
auth: {
redirectUri: window.location.origin, // forces top level instead of specific login pages - fixes deep link issues.
clientId: "Client ID of the website app", //This is your client ID
authority:
"https://login.microsoftonline.com/my-tennant-guid" //This is your tenant info
},
cache: {
cacheLocation: "localStorage",
storeAuthStateInCookie: true
}
};
const msalUserAgent = new Msal.UserAgentApplication(msalConfig);
var requestObj = {
scopes: ["User.Read", "api://MyApi/Access"]
};
//when the spa starts up I login using redirects
msalUserAgent.loginRedirect(requestObj);
//then before calling an api I request a token using this method
acquireTokenSilent() {
var promise = msalUserAgent.acquireTokenSilent(requestObj);
return promise;
},