Я работаю над расширением Chrome, где мне нужно аутентифицировать пользователя в учетной записи Microsoft, чтобы использовать библиотеку MSAL (Graph API) из фоновых сценариев. Но в настоящее время я получаю сообщение об ошибке AADSTS50011: URL-адрес ответа, указанный в запросе, не соответствует URL-адресам ответа, настроенным для приложения.
К сожалению, я не могу ввести URI перенаправления, начинающийся с хром-расширение://, на портале Microsoft.
Есть ли способ, как добиться этого, или это не так?
Редактировать:
Хорошо, кажется, я могу использовать для этого chrome.identity.launchWebAuthFlow. Но при запросе токена требуется client_secret (без этого я получаю код ответа 401). Безопасно ли включать этот client_secret в фоновые сценарии расширения?
Если я правильно понимаю, библиотека msal не требует client_secret
@wOxxOm Да, это можно использовать для авторизации, но как насчет получения токена? Это должен быть запрос POST, который возвращает данные токена в полезной нагрузке ответа. И если я правильно понял, chrome.identity.launchWebAuthFlow поддерживает только запросы GET и возвращает URL-адрес в обратном вызове.
Может быть, этот пост может помочь вам, если вы еще не прошли через него. stackoverflow.com/questions/52415398/…
@mikeek ты смог это сделать? Если да, можете ли вы ответить на свой вопрос, это будет тонна помощи!





MSAL.js поддерживает различные потоки проверки подлинности.
Тот, который называется скрытый, требует, чтобы страница входа (всплывающее или перенаправленное) отображалась для пользователя для ввода учетных данных. Этот поток НЕ требует предоставления client_secret из вашего приложения.
Чтобы бороться с ошибкой AADSTS50011 для этого потока, необходимо убедиться, что URI перенаправления зарегистрирован в Azure AD. Это правда, что URL-адреса хром-расширение:// не соответствуют требованиям Azure.
Именно для этого случая есть решение - chrome.identity.getRedirectURL(). Эта функция генерирует URL-адрес перенаправления такого типа:
https://<app-id>.chromiumapp.org/*
идентификатор приложения — это идентификатор вашего расширения, который будет меняться в среде разработки каждый раз, когда вы меняете путь распаковки расширения. Поэтому убедитесь, что вы своевременно обновили URI перенаправления с помощью Azure. Другим обходным решением для этого является создание ключа и включение его в манифест расширения. Таким образом, вы можете испечь свой идентификатор приложения и перенаправить uri.
Обратите внимание, что сгенерированный uri является поддельным, и если вам нужно обработать ответ от сервера аутентификации, вы должны сделать это в функции обратного вызова:
chrome.identity.launchWebAuthFlow(
{
url: authUrl,
interactive: true
},
function (response) {
// do stuff with code/token, etc.
}
);
Поток предоставление учетных данных клиента работает без авторизации пользователя каждый раз, когда ваше приложение запрашивает аутентификацию. Но хранить учетные данные внутри расширения браузера небезопасно.
Есть больше потоков, но я не вижу их релевантными для исходного вопроса.
Звучит как идеальная работа для chrome.identity.launchWebAuthFlow, при необходимости поищите примеры.