在Azure Active Directory中删除应用程序的AppRole

时间:2017-04-20 10:35:27

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

从应用程序的清单中删除AppRole会产生400错误请求,错误

  

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

当我将isEnabled属性设置为false然后点击“保存”时,我会看到浏览器开发人员工具200 OK,这是一个成功的saven:

Before

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

After

如何在不删除和重新创建整个应用程序的情况下删除appRole?

更新

我提出了以下bug

6 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分: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 :(得分:0)

要删除应用程序角色:

  1. 转到应用清单。
  2. 要删除的应用角色,请将isEnabled的值更改为false。
  3. 保存清单。
  4. 删除该申请。
  5. 再次保存。

答案 4 :(得分:0)

我有相同的错误消息Property value cannot be deleted unless it is disabled first.,因为我已经在一个页面页面上创建了作用域,并试图在另一个页面的清单中手动添加它。我几乎不知道清单是自动更新的,我只需要重新加载它即可。

答案 5 :(得分:0)

您不能删除已启用的已分配角色,首先必须将标志isEnable设置为false,然后将要删除的角色的清单(例如-> "isEnabled": false保存在清单,现在尝试删除整个appRoles部分。 (干杯

这是一个两步过程,但是可行。