【问题标题】:Deleting an Application's AppRole in Azure Active Directory在 Azure Active Directory 中删除应用程序的 AppRole
【发布时间】:2017-09-16 22:41:09
【问题描述】:

从应用程序的清单中删除 AppRole 会产生 400 Bad Request 并出现错误

除非先禁用属性值,否则无法删除它。

当我将 isEnabled 属性设置为 false 然后点击保存时,我获得了成功的保存,并在浏览器开发人员工具中显示 200 OK:

重新加载编辑清单屏幕后,isEnabled 属性仍然是 true,如果您在浏览器开发人员工具中查看 PUT 响应,它也会以 true 的形式返回。

如何删除 appRole 而无需删除并重新创建整个应用程序?

更新

我提出了以下bug。

【问题讨论】:

    标签: azure azure-active-directory azure-ad-graph-api azure-ad-powershell-v2


    【解决方案1】:

    这似乎是新门户中的一个错误。保存操作不会在服务器端将 isEnabled 保存为 false 。任何反馈,您都可以发帖到here。

    目前,您可以使用 Azure AD 经典门户修改清单中的应用角色(下载清单,然后上传已更改的清单)。在经典门户中删除应用程序角色在我的环境中工作正常。如果有帮助,请告诉我。

    【讨论】:

    • 我提出了以下bug。
    • 令人讨厌的是,我无法访问经典的 Azure 门户。还有其他方法可以解决此错误吗?有没有计划修复它?
    • 我会检查 graph api 是否有效,但目前似乎只有经典门户可以在没有 api/powershell 的情况下使其工作。
    【解决方案2】:

    在此问题得到解决之前,有两个选项可以解决此问题:

    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 并在 Application 对象上发出两个 PATCH 请求。第一个PATCH 请求应将应用角色的isEnabled 属性设置为false。然后第二个PATCH 请求可以删除应用角色(即包括所有现有的应用角色,除了禁用的角色)。

    【讨论】:

      【解决方案3】:

      此错误现已修复。您所要做的就是将isEnabled 设置为false 并保存。然后您可以删除角色并再次保存。不需要解决方法。

      【讨论】:

      • 出于好奇也尝试了这个简单的解决方案,效果很好。
      【解决方案4】:

      删除应用程序角色:

      1. 转到应用程序清单。
      2. 您要删除的应用角色,将isEnabled的值更改为false。
      3. 保存清单。
      4. 删除那个approle。
      5. 再次保存。

      【讨论】:

      • 注意:这只是@JohnHenckel 提到的错误修复后的真实情况
      【解决方案5】:

      我收到了相同的错误消息Property value cannot be deleted unless it is disabled first.,因为我在一个页面页面上创建了范围,并尝试在另一个网页的清单中手动添加它。我几乎不知道清单是自动更新的,我只需要重新加载它。

      【讨论】:

        【解决方案6】:

        您不能删除已分配的已启用角色,您首先必须将标志 isEnable 设置为 false 并保存要删除的角色的清单,如下所示 -->"isEnabled": false 在清单中和现在尝试删除整个 appRoles 部分。

        这是一个两步的过程,但有效。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-09-06
          • 2021-09-13
          • 1970-01-01
          • 2016-06-26
          • 1970-01-01
          • 1970-01-01
          • 2020-01-08
          相关资源
          最近更新 更多