У меня есть мультитенантный принципал службы, который предоставляет пользовательский API. Использование MSAL. js 'UserAgentApplication Я могу запросить согласие на ресурсы, которые мне нужны при первом использовании с loginPopup. Однако я не совсем понимаю, какие ресурсы указывать в запросе. Например, допустим, я использую следующее всплывающее окно (обратите внимание на отсутствие области видимости):
await this.userAgentApplication.loginPopup({
prompt: 'consent',
authority: "https://login.microsoftonline.com/organizations"
})
Приложение просто запросит профиль пользователя. Достаточно справедливо.
Однако, скажем, я настраиваю всплывающее окно следующим образом:
await this.userAgentApplication.loginPopup({
scopes: ["api://xyz/Some.Scope"]
prompt: "consent"
authority: "https://login.microsoftonline.com/organizations"
})
Это вызывает исключение:
Пользователь или администратор не согласился использовать приложение с идентификатором 'xxxxxxxx-xxxx-xxxx-xxxx -xxxxxxxxxx 'с именем' XYZ '. Отправьте интерактивный запрос на авторизацию для этого пользователя и ресурса.
Почему я получаю эту ошибку даже при входе в систему с использованием учетной записи глобального администратора?
И, наконец, в дополнение к Для наших собственных данных API нам нужно было иметь возможность читать группы графов в контексте приложения, поэтому я запросил их, используя конечную точку .default (разрешения указаны при регистрации участника службы). Я сделал это с помощью следующего всплывающего окна:
await this.userAgentApplication.loginPopup({
scopes: ["https://graph.microsoft.com/.default"],
prompt: 'consent',
authority: "https://login.microsoftonline.com/organizations"
})
Результатом последней попытки было ... все разрешения, на которые я надеялся!
Войдите и прочитайте профиль пользователя
Чтение и запись всех групп
Моя настраиваемая область действия API (имя приложения)
Но почему в наш запрос на согласие Graph автоматически включаются запросы для других настраиваемых областей?