Подход, предложенный Крисом , является рекомендуемым.Как я писал в этом посте ( licenseissue ), вам также следует позаботиться о правильной настройке разрешений, поскольку вы можете изменить пароль из своего приложения, только если вы предоставите ему необходимые права.
InПоток сброса пароля не может выдать себя за пользователя, потому что у вас нет учетных данных пользователя, поэтому вы должны предоставить привилегии администратора приложению, которое выполняет вызов для других пользователей. Это означает, что вы должны доверять коду приложения и использовать еготщательно.
Я использовал, чтобы предоставить приложению роль администратора службы поддержки, которой достаточно, чтобы сменить пароль для других пользователей.С помощью этого сценария powershell:
Install-Module MSOnline
Install-Module AzureAD
Connect-MsolService
Connect-AzureAD
$applicationId = "{your app ID}"
$sp = Get-MsolServicePrincipal -AppPrincipalId $applicationId
Add-MsolRoleMember -RoleObjectId <your Role ID> -RoleMemberObjectId $sp.ObjectId -RoleMemberType servicePrincipal
Вы должны запустить этот код, используя пользователя с правами администратора в Active Directory.С помощью этой команды вы можете получить правильный roleID:
Get-AzureADDirectoryRole
Теперь у вашего приложения достаточно привилегий для вызова метода PATCH, чтобы изменить пароль для других пользователей.