Аутентификация пользователя в Azure AD (проверка имени пользователя и пароля) через функции Azure

Лучший ответ - лучший! Тем не менее, это не вызвало событий мыши для меня в Firefox, когда etype = 'click'.

Итак, я изменил document.createEvent на 'MouseEvents' и это устранило проблему. Дополнительный код предназначен для проверки того, вмешивался ли какой-либо бит кода в событие, и если он был отменен, я бы зарегистрировал его для консоли.

function eventFire(el, etype){
  if (el.fireEvent) {
    el.fireEvent('on' + etype);
  } else {
    var evObj = document.createEvent('MouseEvents');
    evObj.initEvent(etype, true, false);
    var canceled = !el.dispatchEvent(evObj);
    if (canceled) {
      // A handler called preventDefault.
      console.log("automatic click canceled");
    } else {
      // None of the handlers called preventDefault.
    } 
  }
}
0
задан MMM 16 January 2019 в 20:03
поделиться

1 ответ

Во-первых, важно отметить, что сбор имени пользователя и пароля для пользователя Azure AD как части вашего приложения (функция Azure или веб-приложение, любое другое разрабатываемое вами приложение) в значительной степени противоречит передовым методам и открывает множество атак. риски. Поэтому, даже несмотря на то, что вы можете использовать обходные пути для его достижения, пожалуйста, пересмотрите требование, которое вы предъявляете с точки зрения безопасности.

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

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

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

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

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

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

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

Другие ссылки

  • Здесь старая статья, но все еще очень подробная. И посмотрите на длинный список ограничений в конце.
0
ответ дан Rohit Saigal 16 January 2019 в 20:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: