1

Мы используем несколько LDAP в нашей компании, включая Azure AD для Office365, Google и OpenLDAP - внутренний.Azure AD: изменение пароля пользователя из пользовательского приложения

Мы работаем над каким-то независимым фронт-интерфейсом, где пользователи смогут изменять некоторые свои данные, включая пароль, любые изменения, сделанные пользователем, должны быть автоматически обновлены и реплицированы по всем 3 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» Я не нашел никаких настроек в конфигурации приложения, которые позволили бы мне получить доступ к этому

Это мои все разрешения на приложение:

Azure AD App Permission

немного кода 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 
     } 
} 

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

ответ

1

Исходя из сообщения об ошибке, проблема возникает из-за того, что пользователи, имеющие какие-либо из организационных ролей «Администратор», не являются членами «Администратора компании» или «Администратор учетной записи пользователя» в административных ролях Office 365.

{ "odata.error": { "код": "Authorization_RequestDenied", "сообщение": { "языки": "ан", "значение": "Недостаточно прав для выполнения операции"}} }

Для решения этой проблемы, пожалуйста, обратитесь к КБ, который предоставляет решения: https://support.microsoft.com/en-us/kb/3004133. Я привел ключевые сообщения здесь для краткой справки:

Пожалуйста, добавьте ваше приложение в «Администратор компании» в административных ролях Office 365.Чтобы сделать это, выполните все перечисленные ниже Azure модуль AD для Windows PowerShell (MSOL) командлетов:

#----------------------------------------------------------- 
    # This will prompt you for your tenant's credential 
    # You should be able to use your your Azure AD administrative user name 
    # (in the [email protected] format) 
    #----------------------------------------------------------- 
    Connect-MsolService 

    #----------------------------------------------------------- 
    # Replace the Application Name with the name of your 
    # Application Service Principal 
    #----------------------------------------------------------- 
    $displayName = "Application Name" 
    $objectId = (Get-MsolServicePrincipal -SearchString $displayName).ObjectId 

    #----------------------------------------------------------- 
    # This will add your Application Service Prinicpal to 
    # the Company Administrator role 
    #----------------------------------------------------------- 
    $roleName = "Company Administator"    
    Add-MsolRoleMember -RoleName $roleName -RoleMemberType ServicePrincipal -RoleMemberObjectId $objectId 

Кроме того, необходимо добавить приложение «Администратор учетной записи пользователя» в Office 365 административных функций, если пользователь Azure AD имеет какой-либо из следующих "Администратор" организационных ролей:

• Глобальный администратор

• Billing Администратор

• Администратор службы

Чтобы сделать это, выполните все следующие MSOL командлетов:

#----------------------------------------------------------- 
    # This will prompt you for your tenant's credential 
    # You should be able to use your your Azure AD administrative user name 
    # (in the [email protected] format) 
    #----------------------------------------------------------- 
    Connect-MsolService 

    #----------------------------------------------------------- 
    # Replace the Application Name with the name of your 
    # Application Service Principal 
    #----------------------------------------------------------- 
    $displayName = "Application Name" 
    $objectId = (Get-MsolServicePrincipal -SearchString $displayName).ObjectId 

    #----------------------------------------------------------- 
    # This will add your Application Service Principal to 
    # the Company Administrator role 
    #----------------------------------------------------------- 
    $roleName = "User Account Administator" 
    Add-MsolRoleMember -RoleName $roleName -RoleMemberType ServicePrincipal -RoleMemberObjectId $objectId 

После запуска оба набора командлетов, ваше приложение будет иметь возможность изменить пароль всех «Administrator» организационных роли.

Обратите внимание, что после добавления разрешений административным ролям Office 365 может потребоваться до 30 минут для разрешений, которые будут применяться к Принципам службы приложений.

Если у вас есть другие проблемы, пожалуйста, сообщите нам об этом.

 Смежные вопросы

  • Нет связанных вопросов^_^