Изменить пароль Azure AD B2C
Мне удалось создать приложение "Функции Azure" для управления пользователями Azure B2C. Я могу без проблем создавать новых пользователей и обновлять профили с помощью client_credentials Flow. Однако, когда я меняю пароль с помощью запроса PATCH с телом:
{
passwordProfile: {
password: 'password-value',
forceChangePasswordNextSignIn: false
},
passwordPolicies: "DisablePasswordExpiration"
}
Я получаю такую ошибку:
{code: 'Authorization_RequestDenied', message: 'Insufficient privileges to complete the operation.'}
Я провел небольшое исследование и выяснил, что для обновления пароля требуется делегированное разрешение "Directory.AccessAsUser.All". Из внешнего приложения я вхожу в систему, используя B2CLogin Flow, поэтому токен доступа несовместим с Graph API. Кроме того, "Directory.AccessAsUser.All" не существует на уровне приложения в приложении B2C. Поэтому я также не могу использовать запрос на исправление с потоком client_credentials. Согласно некоторым предложениям, этот процесс можно выполнить с помощью Azure AD PowerShell, назначив роль "Администратор компании". Но я не нашел решения для сброса пароля с помощью функции Azure. Пошаговое решение (если оно существует) было бы очень полезно для меня, поскольку я относительно новичок в Службах Azure.
1 ответ
Самый простой способ - назначить роль глобального администратора субъекту службы на портале Azure.
Перейдите на портал Azure - Azure Active Directory - роли и администраторы.
Найдите "Глобальный администратор" и выберите его.
Нажмите + Добавить задания. А затем найдите своего субъекта-службы.
Обратите внимание, что "Заявки разрешены только для активных заданий".
Поэтому, щелкнув "Далее>", выберите "Активный" для типа назначения.
После завершения назначения вы можете обновить пароль с помощью потока client_credentials.
Add-AzureADDirectoryRoleMember, упомянутый @Jas Suri, также может делать то же самое.