Использование Microsoft Graph API (библиотека msal) из расширения Chrome

Я работаю над расширением Chrome, где мне нужно аутентифицировать пользователя в учетной записи Microsoft, чтобы использовать библиотеку MSAL (Graph API) из фоновых сценариев. Но в настоящее время я получаю сообщение об ошибке AADSTS50011: URL-адрес ответа, указанный в запросе, не соответствует URL-адресам ответа, настроенным для приложения.

К сожалению, я не могу ввести URI перенаправления, начинающийся с хром-расширение://, на портале Microsoft.

Есть ли способ, как добиться этого, или это не так?

Редактировать:

Хорошо, кажется, я могу использовать для этого chrome.identity.launchWebAuthFlow. Но при запросе токена требуется client_secret (без этого я получаю код ответа 401). Безопасно ли включать этот client_secret в фоновые сценарии расширения?

Если я правильно понимаю, библиотека msal не требует client_secret

Звучит как идеальная работа для chrome.identity.launchWebAuthFlow, при необходимости поищите примеры.

wOxxOm 06.03.2019 05:32

@wOxxOm Да, это можно использовать для авторизации, но как насчет получения токена? Это должен быть запрос POST, который возвращает данные токена в полезной нагрузке ответа. И если я правильно понял, chrome.identity.launchWebAuthFlow поддерживает только запросы GET и возвращает URL-адрес в обратном вызове.

mikeek 06.03.2019 21:32

Может быть, этот пост может помочь вам, если вы еще не прошли через него. stackoverflow.com/questions/52415398/…

ThePretendProgrammer 23.03.2019 14:48

@mikeek ты смог это сделать? Если да, можете ли вы ответить на свой вопрос, это будет тонна помощи!

Rinor 03.12.2019 08:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
775
1

Ответы 1

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.
  }
);

Поток предоставление учетных данных клиента работает без авторизации пользователя каждый раз, когда ваше приложение запрашивает аутентификацию. Но хранить учетные данные внутри расширения браузера небезопасно.

Есть больше потоков, но я не вижу их релевантными для исходного вопроса.

Другие вопросы по теме