Я создал приложение в https://apps.dev.microsoft.com
(Платформы: Интернет)
Это приложение требует согласия администратора для определенных разрешений. Я помню, в прошлом доступ https://login.microsoftonline.com/{tenant name}/adminconsent?client_id={application id}&state={some state data}&redirect_uri={redirect uri}
с учетной записью администратора для предоставления доступа к ресурсам в нашей организации, которые может предоставить только администратор. Оттуда пользователи должны были дать согласие на уровне пользователя, чтобы использовать приложение.
Теперь я могу успешно войти в систему с учетной записью администратора, и приложение работает как положено, НО я все еще получаю приглашение для пользователей со следующим сообщением:
You can't access this application
APP NAME needs permission to access resources in your organization that only an admin can grant. Please ask an admin to grant permission to this app before you can use it.
Have an admin account? Sign in with that account
Return to the application without granting consent
Сообщение об ошибке: AADSTS90094: The grant requires admin permission.
который, кажется, нигде не задокументирован ..
Если я нажму на Have an admin account? Sign in with that account
и войдите в систему с учетной записью администратора, это работает, но при попытке снова с учетной записью обычного пользователя я снова получаю сообщение выше.
РЕДАКТИРОВАТЬ:
Поэтому я сократил разрешения до минимума.
Области применения в моем приложении сейчас: openid
, profile
, user.read
И Microsoft Graph Permissions теперь для Делегированные разрешения: Mail.Send
, User.Read
, Ничего в Разрешения приложений и я все равно получу вышеуказанное сообщение для постоянных пользователей!
У кого-нибудь из Microsoft есть информация по коду ошибки AADSTS90094?
ОК, поэтому я обратился в службу поддержки Microsoft по этому вопросу, поскольку на эту дату в этом сообщении об ошибке нет информации.
Короче говоря, Microsoft внесла некоторые недавние изменения в отношении разрешений. В прошлом, если ваше приложение требовало openid
, profile
или же offline_access
Вы можете просто разместить их в своем приложении как области, они не были доступны на https://apps.dev.microsoft.com
, Администратор дал бы согласие, и ваше приложение работало бы правильно.
Что вы должны теперь сделать, это зеркало области вашего приложения с разрешениями, которые у вас есть на https://apps.dev.microsoft.com
или же вы будете продолжать получать это сообщение об ошибке, поэтому убедитесь, что у вас есть тоже самое с обеих сторон, особенно если вы привыкли к старому поведению.
Эти три области / разрешения (openid
, profile
а также offline_access
) теперь можно выбрать для вашего приложения на портале разработчиков.
Конечная точка согласия администратора не помогает в динамическом масштабе и сценарии динамического согласия.
Использование конечной точки согласия администратора предоставит разрешения, зарегистрированные на портале регистрации приложений. Вы можете найти раздел Microsoft Graph Permissions, а затем добавить разрешения, которые требуются вашему приложению. После получения согласия администратора с помощью конечной точки согласия администратора ваше приложение может собирать разрешения для всех пользователей в клиенте, включая области с ограничениями администратора.
я использую MSAL
и 2.0
конечная точка (login.microsoft …), я разрабатываю Multi-Tenant
Заявка.
В моей организации 2 арендатора
Один из них по сути наш Dev
экземпляр (и у меня есть глобальные права администратора). Я зарегистрировал свое приложение в Tenant
что у меня нет прав администратора и я получил согласие администратора на указанное приложение в Арендаторе, где я могу выполнить согласие самостоятельно. Мои пользователи могут успешно войти в систему и получить согласие на необходимые им ресурсы.
Тем не менее, когда я создал приложение Регистрация (все конвергентные приложения на apps.dev.mic
) из учетной записи, где у меня есть глобальные права администратора, логин для моих пользователей получает AADSTS90094 Error
,
Единственный способ «исправить» эту ошибку —
При первоначальном входе в приложение объем будет openid
Затем пользователь соглашается с тем, что, когда это будет завершено, я должен сделать еще один вход в систему с областью, определенной для приложения, и все работает. Очевидно, что UX
поразительно, если не сказать больше.