Во-первых, важно отметить, что сбор имени пользователя и пароля для пользователя Azure AD как части вашего приложения (функция Azure или веб-приложение, любое другое разрабатываемое вами приложение) в значительной степени противоречит передовым методам и открывает множество атак. риски. Поэтому, даже несмотря на то, что вы можете использовать обходные пути для его достижения, пожалуйста, пересмотрите требование, которое вы предъявляете с точки зрения безопасности.
Обходной путь - ROPC - Предоставление учетных данных пароля владельца ресурса (не рекомендуется, несколько проблем)
Azure AD не предоставляет прямой API для проверки учетных данных пользователя. В качестве обходного пути (и при этом плохого) вы можете использовать поток учетных данных владельца ресурса (ROPC) , который работает с именем пользователя и паролем для получения токена.
Это нарушает рекомендации по безопасности, а также не работает с пользователями MFA и федеративной аутентификации . Использование этого гранта крайне нежелательно, так как оно потенциально опасно для атаки, поэтому не рекомендуется.
Если имя пользователя или пароль неверны, вы получите исключение, в противном случае вы получите верный токен, который означает, что учетные данные хороши.
Вот несколько ссылок, которые охватывают детали ROPC (и рекомендуем не использовать его одновременно ..):
Например, код будет выглядеть так для нативного приложения.
result = await context.AcquireTokenAsync(resource, clientId, new UserPasswordCredential("john@contoso.com", johnsPassword));
Другие ссылки
- Здесь - старая статья, но все еще очень подробная. И посмотрите на длинный список ограничений в конце.