В нашей компании мы используем несколько LDAP, в том числе Azure AD для Office365, Google и OpenLDAP — внутренний.
Мы работаем над чем-то вроде независимого лицевого веб-интерфейса, где пользователи смогут изменять некоторые свои данные, включая пароль, любые изменения, сделанные пользователем, должны автоматически обновляться и реплицироваться во всех трех LDAP.
Для этого я использую собственный скрипт Python, однако у меня возникли проблемы с Azure AD, и он не позволяет мне изменить пароль.
Я могу просматривать всех пользователей и их данные, но не могу изменить пароль. Когда я делаю запрос на аутентификацию, он отвечает мне разрешениями, которые были предоставлены моему приложению:
scope = Directory.Read Directory.ReadWrite.All Directory.Write offline_access recipient.manage User.ReadWrite User.ReadWrite.All user_impersonation UserProfile.Read
Однако ответ сервера:
{"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."}}}
Итак, как я вижу, «Directory.ReadWrite.All» недостаточно, у меня также есть «UserProfile.Read», но не «UserProfile.Write». Я не нашел никаких настроек в конфигурации приложения, которые позволили бы мне получить этот доступ
Это все мои разрешения для приложений:
Немного кода Python:
graphusersurl = GRAPH_API_URL % (TENANT_ID, 'users/<User_ObjectID>', API_VER)
graphheaders={'Authorization': "%s %s" % (TOKEN_TYPE_VALUE, access_token),
'Content-Type': 'application/json',
}
passworddata = {
"passwordProfile":
{ "password":'<NEW_USER_PASSWORD>',
"forceChangePasswordNextLogin":False
}
}
Не могли бы вы сказать мне, пожалуйста, что я делаю неправильно? и как я могу получить авторизацию для выполнения такого действия?