Управление методами проверки подлинности пользователей с помощью Microsoft Graph

Способы проверки подлинности — это способы, с помощью которых происходит проверка подлинности пользователей в Azure Active Directory (Azure AD). Способы проверки подлинности в Azure AD включают пароль и телефон (например, SMS и голосовые вызовы), которыми можно управлять в Microsoft Graph уже сегодня, и множество других, таких как ключи безопасности FIDO2 и приложение Microsoft Authenticator. Способы проверки подлинности используются в ходе основной, двухфакторной проверки подлинности, проверки подлинности повышенного уровня, а также в процессе самостоятельного сброса пароля (SSPR).

Вы можете использовать API способа проверки подлинности для управления способами проверки подлинности пользователя. Например, вы можете:

  • добавить номер телефона пользователя, который затем он может использовать для проверки подлинности с помощью SMS и голосового вызова, если применение такого способа разрешено политикой;
  • обновить или удалить номер телефона, назначенный пользователю;
  • включить или отключить номер для входа с помощью SMS;
  • сбросить пароль пользователя.

API — это основной инструмент для управления способами проверки подлинности пользователей.

С помощью данного руководства вы научитесь:

  • выполнять проверку подлинности в Azure AD с правильными ролями и разрешениями;
  • проверять способы проверки подлинности пользователя;
  • добавлять новые номера телефонов пользователю;
  • удалять номера телефона у пользователя;
  • сбрасывать пароль пользователя.

Этап 1: проверка подлинности в Azure AD с правильными ролями и разрешениями

С помощью любимогоинструмента взаимодействия с Microsoft Graph выполните вход, используя учетную запись с одной из этих ролей:

  • глобальный администратор;
  • привилегированный администратор проверки подлинности;
  • администратор проверки подлинности.

Теперь можно изменить разрешения. В этом руководстве мы будем использовать метод UserAuthenticationMethod.ReadWrite.All, поэтому убедитесь, что он включен в песочнице Graph или в приложении.

После назначения и предоставления области можно приступить к работе с API. Здесь в примерах используется стандартный пользователь с именем Андрей Говоров. Необходимо использовать уже имеющуюся тестовую учетную запись или создать новую, соблюдая эти инструкции. Это интерактивные API, поэтому не проверяйте их на реальных пользователях.

Этап 2: проверка способов проверки подлинности пользователя

Сделайте вызов для отображения способов проверки подлинности пользователя Введите URL-адрес, чтобы просмотреть профиль пользователя, и добавьте /authentication/methods:

Запрос

GET https://graph.microsoft.com/beta/users/avery.howard@wingtiptoysonline.com/authentication/methods

Отклик

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('avery.howard%40wingtiptoysonline.com')/authentication/methods",
    "value": [
        {
            "@odata.type": "#microsoft.graph.passwordAuthenticationMethod",
            "id": "28c10230-6103-485e-b985-444c60001490",
            "password": null,
            "creationDateTime": null
        }
    ]
}

Этап 3: добавление новых номеров телефонов пользователю

На предыдущем этапе новый пользователь (Андрей) зарегистрировал только пароль. Чтобы назначить новый номер телефона, который будет использовать Андрей, выполните запрос POST с типом телефона и номером в теле. Чтобы сообщить системе о том, что номер телефона добавлен, вам также потребуется изменить окончание URL-адреса с methods на phoneMethods.

Запрос

POST https://graph.microsoft.com/beta/users/avery.howard@wingtiptoysonline.com/authentication/phoneMethods
Content-Type: application/json
{
    "phoneType": "mobile",
    "phoneNumber": "+1 2065550123"
}

Отклик

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('avery.howard%40wingtiptoysonline.com')/authentication/phoneMethods/$entity",
    "id": "3179e48a-750b-4051-897c-87b9720928f7",
    "phoneNumber": "+1 2065550123",
    "phoneType": "mobile",
    "smsSignInState": "ready"
}

Чтобы добавить рабочий номер телефона Андрея, вам потребуется выполнить запрос POST повторно на этот же URL-адрес, но обновить тип и номер телефона.

Запрос

POST https://graph.microsoft.com/beta/users/avery.howard@wingtiptoysonline.com/authentication/phoneMethods
Content-Type: application/json
{
    "phoneType": "office",
    "phoneNumber": "+1 4255550199"
}

Отклик

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('avery.howard%40wingtiptoysonline.com')/authentication/phoneMethods/$entity",
    "id": "e37fc753-ff3b-4958-9484-eaa9425c82bc",
    "phoneNumber": "+1 4255550199",
    "phoneType": "office",
    "smsSignInState": "notSupported"
}

Выполните еще один запрос GET на URL-адрес способов проверки с помощью телефона для отображения всех номеров телефона Андрея:

Запрос

GET https://graph.microsoft.com/beta/users/avery.howard@wingtiptoysonline.com/authentication/phoneMethods

Отклик

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('avery.howard%40wingtiptoysonline.com')/authentication/phoneMethods",
    "value": [
        {
            "id": "e37fc753-ff3b-4958-9484-eaa9425c82bc",
            "phoneNumber": "+1 4255550199",
            "phoneType": "office",
            "smsSignInState": "notSupported"
        },
        {
            "id": "3179e48a-750b-4051-897c-87b9720928f7",
            "phoneNumber": "+1 2065550123",
            "phoneType": "mobile",
            "smsSignInState": "ready"
        }
    ]
}

Убедитесь, что вы видите оба номера, как и предполагалось.

Этап 4: удаление номера телефона у пользователя

В этом случае Андрей теперь работает из дома, поэтому вам нужно удалить рабочий номер из его учетной записи. Необходимо выполнить запрос DELETE на URL-адрес рабочего телефона, который можно создать, добавив идентификатор рабочего номера в URL-адрес способов проверки по телефону. Просмотрите список номеров телефона Андрея: идентификатор рабочего номера телефона начинается с "e37f".

Запрос

DELETE https://graph.microsoft.com/beta/users/avery.howard@wingtiptoysonline.com/authentication/phoneMethods/e37fc753-ff3b-4958-9484-eaa9425c82bc

В отклике нет данных, так как в нем больше нет рабочего номера. Чтобы убедиться в том, что номер был удален, просмотрите все способы для Андрея. Процедура GET аналогична той, которая была сделана ранее.

Запрос

GET https://graph.microsoft.com/beta/users/avery.howard@wingtiptoysonline.com/authentication/methods

Отклик

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('avery.howard%40wingtiptoysonline.com')/authentication/methods",
    "value": [
        {
            "@odata.type": "#microsoft.graph.phoneAuthenticationMethod",
            "id": "3179e48a-750b-4051-897c-87b9720928f7",
            "phoneNumber": "+1 2065550123",
            "phoneType": "mobile",
            "smsSignInState": "ready"
        },
        {
            "@odata.type": "#microsoft.graph.passwordAuthenticationMethod",
            "id": "28c10230-6103-485e-b985-444c60001490",
            "password": null,
            "creationDateTime": null
        }
    ]
}

Как и предполагалось, пользователь снова сможет использовать только один номер мобильного телефона и пароль.

Этап 5: сброс пароля пользователя

В этом сценарии Андрей забыл свой пароль и вам необходимо выполнить сброс его пароля. Для сброса необходимо выполнить запрос POST на URL-адрес пароля (см. идентификатор, начинающийся с "28c1" выше в списке способов проверки подлинности Андрей), указав действие "resetPassword". В теле запроса укажите новый пароль.

Запрос

POST https://graph.microsoft.com/beta/users/avery.howard@wingtiptoysonline.com/authentication/passwordMethods/28c10230-6103-485e-b985-444c60001490/resetPassword
Content-Type: application/json
{
    "newPassword": "29sdjfw#fajsdA_a_3an3223"
}

Отклик

Location: https://graph.microsoft.com/beta/users/ed178e23-7447-4892-baf8-fc46f8af26ce/authentication/operations/74bfa1a6-c0e0-4957-8c37-f91048f4959e?aadgdc=BY01P&aadgsu=ssprprod-a

Поскольку происходит синхронизация пароля с Active Directory в локальной инфраструктуре клиента, то этот процесс может занять несколько минут, поэтому у вас есть адрес, по которому можно проверить завершение процесса синхронизации. Этот адрес находится в заголовке расположения отклика, а для просмотра статуса выполните запрос GET по этому URL-адресу.

Запрос

GET https://graph.microsoft.com/beta/users/ed178e23-7447-4892-baf8-fc46f8af26ce/authentication/operations/74bfa1a6-c0e0-4957-8c37-f91048f4959e?aadgdc=BY01P&aadgsu=ssprprod-a

Отклик

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('ed178e23-7447-4892-baf8-fc46f8af26ce')/authentication/operations/$entity",
    "id": "74bfa1a6-c0e0-4957-8c37-f91048f4959e",
    "createdDateTime": "2020-05-14T00:23:40Z",
    "lastActionDateTime": "2020-05-14T00:23:41Z",
    "status": "succeeded",
    "statusDetail": "ResetSuccess",
    "resourceLocation": "https://graph.microsoft.com/beta/users/ed178e23-7447-4892-baf8-fc46f8af26ce/authentication/methods/28c10230-6103-485e-b985-444c60001490"
}

Выполнено! Вы ознакомились с информацией о просмотре профиля пользователя, методах проверки подлинности, добавлении и удалении номеров телефонов, а также о сбросе пароля. Теперь вы можете приступать к управлению способами для своих пользователей.

Справочные материалы по API

Ищете справочные материалы по API для способов проверки подлинности?

Дальнейшие действия

  • Используйте Azure AD для аутентификации в Microsoft Graph.
  • Интегрируйте вход в Azure AD в свое приложение или в свой веб-сайт.
  • Сведения о новых возможностях API Azure AD см. в журнале изменений.
  • Изучите примеры, чтобы получить более четкое представление об использовании Microsoft Graph.