Удаление AppRole приложения в Azure Active Directory

Удаление AppRole из манифеста приложения приводит к 400 Bad Request с ошибкой

Значение свойства нельзя удалить, если оно не отключено предварительно.

Когда я устанавливаю для свойства isEnabled значение false, а затем нажимаю «Сохранить», я получаю успешное сохранение с 200 OK, глядя на инструменты разработчика браузера:

До

После перезагрузки экрана «Редактировать манифест» свойство isEnabled по-прежнему равно true, и если вы посмотрите на ответ PUT в инструментах разработчика браузера, он также возвращается как true.

После

Как я могу удалить appRole, не удаляя и не создавая заново все приложение?

Обновлять

Я поднял следующий вопрос: ошибка.


person Muhammad Rehan Saeed    schedule 20.04.2017    source источник


Ответы (6)


Пока это не будет исправлено, есть два варианта решения этой проблемы:

  1. Используя Azure AD PowerShell, вы можете отключить, а затем удалить роль приложения. Вот пример скрипта, который позволит это сделать:

    $appId = "83d7d56d-6e64-4791-b8e8-9a8da8dd957e"
    $appRoleValue = "app-role-value" # i.e. the scope
    
    Connect-AzureAD
    
    # Disable the AppRole
    $app = Get-AzureADApplication -Filter "appId eq '$appId'"
    ($app.AppRoles | Where-Object { $_.Value -eq $appRoleValue }).IsEnabled = $false
    Set-AzureADApplication -ObjectId $app.ObjectId -AppRoles $app.AppRoles
    
    # Remove the AppRole
    $toRemove = $app.AppRoles | Where-Object { $_.Value -eq $appRoleValue }
    $app.AppRoles.Remove($toRemove) | Out-Null
    Set-AzureADApplication -ObjectId $app.ObjectId -AppRoles $app.AppRoles
    
  2. Альтернативный вариант — использовать Azure AD Graph Explorer и выполнить два запроса PATCH для объекта Application. Первый запрос PATCH должен установить для атрибута isEnabled роли приложения значение false. Затем второй запрос PATCH может удалить роль приложения (т. е. включить все существующие роли приложения, кроме отключенной).

person Philippe Signoret    schedule 01.12.2017

Эта ошибка исправлена. Все, что вам нужно сделать, это установить для isEnabled значение false и сохранить. Затем вы можете удалить роль и сохранить снова. Обходной путь не требуется.

person John Henckel    schedule 30.10.2018
comment
Из любопытства попробовал это простое решение, и оно отлично работает. - person Kristian; 10.04.2019

Чтобы удалить роль приложения:

  1. Перейдите в манифест приложения.
  2. Роль приложения, которую вы хотите удалить, измените значение isEnabled на false.
  3. Сохраните манифест.
  4. Удалите это яблоко.
  5. Снова сохрани.
person Rajat Negi    schedule 05.07.2019
comment
Примечание. Это верно только после исправления ошибки, упомянутого @JohnHenckel. - person Joshua Drake; 08.10.2019

Кажется, ошибка в новом портале. Операция сохранения не сохраняет isEnabled в false на стороне сервера. Любой отзыв , который вы можете опубликовать в здесь .

В настоящее время вы можете использовать классический портал Azure AD для изменения ролей приложения в манифесте (скачайте манифест, а затем загрузите измененный манифест). Удаление ролей приложений на классическом портале отлично работает в моей среде. Пожалуйста, дайте мне знать, если это поможет.

person Nan Yu    schedule 21.04.2017
comment
Я поднял следующий вопрос: ошибка. - person Muhammad Rehan Saeed; 21.04.2017
comment
Досадно, что у меня нет доступа к классическому порталу Azure. Есть ли другой способ обойти эту ошибку? Есть ли какое-либо запланированное исправление для этого? - person Muhammad Rehan Saeed; 21.04.2017
comment
Я проверю, работает ли граф API, но в настоящее время кажется, что только классический портал может заставить его работать без API/powershell. - person Nan Yu; 21.04.2017

У меня было то же сообщение об ошибке Property value cannot be deleted unless it is disabled first., потому что я создал область на одной странице и попытался добавить ее вручную в манифест на другой веб-странице. Я немного знал, что манифест обновлялся автоматически, и мне просто нужно было перезагрузить его.

person Praytic    schedule 11.05.2020

Вы не можете удалить назначенные роли, которые включены, вам сначала нужно установить флаг isEnable в false и сохранить манифест для ролей, которые вы хотите удалить, вот так --›"isEnabled": false в манифесте, а теперь попробуйте удалить целая часть appRoles. ( Cheers ????)

Это двухэтапный процесс, но он работает.

person Mayur Chavan    schedule 02.07.2020