Можно ли проверить пароль пользователя Azure Active Directory - PullRequest
0 голосов
/ 07 ноября 2018

Мы используем API-интерфейс Graph Azure и можем получить возвращаемые атрибуты, но не можем проверить пароль пользователя с помощью стандартной библиотеки .Net, которая хэширует пароль так же, как для On-Prem Active Directory. Можно ли подтвердить пароль Azure Active Directory пользователя?

1 Ответ

0 голосов
/ 07 ноября 2018

Краткий ответ: Нет .

В идеале, в коде вашего приложения никогда не должно быть пароля пользователя, так как это противоречит рекомендациям по безопасности и не рекомендуется / не рекомендуется. Учетные данные пользователя должны предоставляться непосредственно конечным точкам Azure AD только через различные поддерживаемые потоки грантов OAuth 2.0, и приложение должно работать с токенами / кодом авторизации, возвращаемым Azure AD.

В библиотеках ADAL (а также в конечных точках Azure AD) вы не найдете ничего особенного только для проверки учетных данных пользователя, а только для методов получения токенов.

Обходной путь - ROPC - Предоставление учетных данных пароля владельца ресурса (не рекомендуется, несколько проблем)

При использовании ROPC в коде вашего приложения есть пароль пользователя. Это нарушает рекомендации по безопасности, а также не работает с пользователями MFA и федеративной аутентификации . Использование этого гранта крайне не рекомендуется, так как это создает потенциальные риски атаки, поэтому не рекомендуется.

Обходной путь - использовать ROPC для получения токена для пользователя. Если имя пользователя или пароль неверны, вы получите исключение, в противном случае вы получите верный токен, который означает, что учетные данные хороши.

Вот несколько ссылок, которые охватывают детали ROPC (и рекомендуем не использовать его одновременно ..):

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

result = await context.AcquireTokenAsync(resource, clientId, new UserPasswordCredential("john@contoso.com", johnsPassword));
...