#azure-active-directory #azure-ad-b2c #adal #msal #microsoft-account
#azure-active-directory #azure-ad-b2c #adal #azure-ad-msal #учетная запись Microsoft
Вопрос:
Сценарий: (размещенный в Azure) Веб-приложение. Пользователи должны иметь возможность входить в мое приложение, используя учетную запись Microsoft (т. Е. @live.com, @hotmail.com и т.д. учетные записи), У которого есть одна или несколько подписок Azure. Затем приложение позволит им просматривать свои ресурсы Azure определенными способами и управлять ими через мое приложение.
Моменты замешательства / разочарования:
- ADAL против MSAL для аутентификации
- Azure AD против Azure AD B2C для клиента, на котором размещено приложение
- Где вы регистрируете приложение-клиент? В AD B2C в разделе «Регистрация приложений»? В обычном объявлении в разделе «Регистрация приложений (предварительный просмотр)»? На портале регистрации приложений (т. Е. apps.dev.microsoft.com )?
- Какой из приведенных выше идентификаторов клиента и секретных данных вы используете в веб-приложении (в файле .config)?
Документация ни для одного из них, похоже, не охватывает сценарий полностью, и большая его часть полностью не синхронизирована с другими разработками.
Я надеюсь здесь получить некоторые рекомендации от других разработчиков, которые сами прошли этот путь (а не от людей, которые просто читают документацию). В частности, я надеюсь получить ответы от команды Azure CXP, которая отслеживает эти вопросы и предоставляет официальные и поддерживаемые ответы.
Ответ №1:
Для вашего сценария требуется доступ к API Azure, поэтому вы должны выполнять вход в систему с использованием «обычного» AAD, а не B2C. Вы не можете выполнять вход в систему с использованием учетных записей MSA напрямую, поскольку они должны быть членами AAD, чтобы иметь доступ к подпискам.
Вы можете использовать ADAL или MSAL для обработки аутентификации. Обратите внимание, что вы должны использовать конечную точку версии 2.0 для MSAL и конечную точку «v1» для ADAL. Смотрите ограничения конечной точки версии v2 здесь: https://learn.microsoft.com/en-us/azure/active-directory/develop/azure-ad-endpoint-comparison.
Вы регистрируете его в Azure portal -> Azure Active Directory -> Регистрация приложений. Вы также можете использовать предварительную версию, если хотите.
Вам понадобится идентификатор приложения (= идентификатор клиента) ключ (секретный) от регистрации приложения.
Комментарии:
1. Именно так в настоящее время работает мой POC «devbox». НО это не позволяет мне разрешать вход в систему другим людям, кроме меня (которые не зарегистрированы в качестве пользователей в моем Azure AD), что противоречит целям приложения и возможной области применения. Подумайте о таком приложении, как Cloudyn’s Cost Management.
2. Приложение, подобное описанному вами, является многопользовательским приложением. Вы регистрируете его в том же месте, но помечаете как многопользовательское. Затем вы используете полномочия «общие» (v1) или «организации» (v2), чтобы разрешить пользователю из любого клиента AAD войти в систему.
3. Это именно то, что я сейчас делаю. НО, если вы попытаетесь войти в приложение (точно настроенное так, как вы описали выше), вы увидите ошибку AADSTS50020. Чтобы обойти это, мне нужно было бы добавить ваш MSA в мой Azure AD в качестве учетной записи пользователя — отправить вам приглашение для гостей и т.д. Это не то, что мне нужно.
4. Похоже, что пользователь пытается войти в систему с чистой учетной записью MS, которой нет в AAD. Вы не можете получить доступ к API Azure, если пользователь не является AAD.
5. Пользователь находится в AAD. Просто не в моем AAD. Например, у вас есть подписка Azure, поэтому вы находитесь в Azure AD, но под вашим клиентом. При входе в мое приложение вы получите AADSTS50020, в котором указано, что вы не находитесь в моем клиенте AAD.