Параметры сброса пароля Azure AD B2C при вызове Microsoft Graph из API

Есть ли способ сбросить пароль пользователя B2C из приложения b2c, которому предоставлены только разрешения приложения для Microsoft Graph?

У нас есть сценарий, в котором в мультитенантном приложении есть пользователи, не использующие электронную почту, и нам нужно разрешить администраторам сбрасывать пароли. Для обеспечения функций управления пользователями у нас есть служба приложений, использующая пакет SDK для .net Microsoft.Graph. Кажется, единственный способ сбросить пароль пользователя — это использовать resestPassword, но это не может быть вызвано приложением.

Насколько я вижу, единственный доступный нам вариант — настроить пользователя для этой задачи и сохранить его данные в хранилище ключей Azure, а затем позволить приложению войти в качестве пользователя для вызова конечной точки.

Я действительно хотел бы избежать этого подхода, если это возможно, и кажется, что это должен быть общий сценарий, поэтому я надеюсь, что есть лучший способ?

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
102
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Привет, вы можете использовать обновление пользователя для сброса пароля пользователя B2C.

PATCH https://graph.microsoft.com/v1.0/users/{id}
Content-type: application/json

{
  "passwordProfile": {
    "forceChangePasswordNextSignIn": false,
    "password": "xWwvJ]6NMw+bWH-d"
  }
}

Для получения дополнительной информации: https://learn.microsoft.com/en-us/graph/api/user-update?view=graph-rest-1.0&tabs=http#permissions

Ответ принят как подходящий

Я попытался воспроизвести то же самое в своей среде и получил результаты, как показано ниже:

Обратите внимание: согласно MsDoc, в настоящее время невозможно сбросить пароль для пользователей с предоставлением только разрешений для приложений.

Сброс пароля пользователя с разрешениями приложения приведет к следующей ошибке:

POST https://graph.microsoft.com/v1.0/users/UserID/authentication/passwordMethods/28c10230-6103-485e-b985-444c60001490/resetPassword 
Content-type: application/json
 {
 "newPassword": "xxxx"
  }

В качестве альтернативы я создал приложение Azure AD и предоставил следующие разрешения API:

Предоставьте роль администратора пользователя субъекту-службе, как показано ниже:

Теперь сгенерируйте токен доступа через поток учетных данных клиента, используя следующие параметры:

GET https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id:ClientID
client_secret:ClientSecret
scope:https://graph.microsoft.com/.default
grant_type:client_credentials

Используя сгенерированный выше токен, попробуйте сбросить пароль, используя следующий запрос:

PATCH https://graph.microsoft.com/v1.0/users/{id}
Content-type: application/json

{
  "passwordProfile": {
      "password": "xxxx"
  }
}

Вы можете использовать параметр forceChangePasswordNextSignIn в зависимости от ваших требований.

Использованная литература:

Сброс пароля Azure с помощью Graph API от CarlZhao-MSFT

Сбросьте пароль пользователя в ADB2C с помощью MS Graph API от kh_Ro

Это сработало отлично, спасибо. Я не добавил участника-пользователя в роль администратора пользователя. Даже с этой конечной точкой resetPassword не работает, но обновление пользователя делает свою работу.

JayChase 25.01.2023 04:12

Другие вопросы по теме