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

13

从应用程序清单中删除AppRole会产生一个“400 Bad Request”错误,错误信息如下:

只有在禁用属性后才能删除属性值。

当我将isEnabled属性设置为false并保存时,通过浏览器开发工具查看,成功保存并返回200 OK响应:

Before

重新加载编辑清单屏幕后,isEnabled属性仍然是true ,如果您查看浏览器开发工具中的PUT响应,则该值也被返回为true

After

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

更新

我已经提出了以下错误报告

7个回答

19

这个bug已经修复。你需要做的就是将isEnabled设置为false并保存。然后你可以删除角色并再次保存。无需使用解决方法。


1
我也出于好奇尝试了这个简单的解决方案,结果完美运行。 - Kristian

8

删除应用程序角色:

  1. 进入应用程序清单。
  2. 找到要删除的应用程序角色,将 isEnabled 值改为 false。
  3. 保存清单。
  4. 删除该应用程序角色。
  5. 再次保存。

注意:这只有在@JohnHenckel提到的错误修复后才成立。 - Joshua Drake

3
似乎新门户中存在错误,保存操作在服务器端无法将 isEnabled 设置为 false。如有反馈,请到此处发布。 目前,您可以使用 Azure AD 经典门户在清单中修改应用程序角色(下载清单,然后上传更改后的清单)。在我的环境中,在经典门户中删除应用程序角色可正常运行。请告诉我这是否有用。

我已经提出了以下错误 - Muhammad Rehan Saeed
1
非常让人烦恼,我无法访问经典的Azure门户。有没有其他方法可以解决这个问题?是否有任何计划修复它? - Muhammad Rehan Saeed
我将检查图形 API 是否可以工作,但目前似乎只有经典门户才能在没有 API / PowerShell 的情况下使其运行。 - Nan Yu

3

在此问题得到修复之前,有两种解决方案:

  1. Using Azure AD PowerShell, you can disable and then remove the app role. Here's a sample script that would achieve this:

    $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. An alternative option is to user the Azure AD Graph Explorer and issue two PATCH requests on the Application object. The first PATCH request should set the app role's isEnabled attribute to false. The second PATCH request can then remove the app role (i.e. include all existing app roles except the disabled one).


0

我曾经遇到过同样的错误信息 属性值不能被删除,除非先将其禁用。 这是因为我在一个页面上创建了作用域,然后试图在另一个网页的清单中手动添加它。我并不知道清单会自动更新,我只需要重新加载它就可以了。


0
  • 导航到您的应用程序

  • 转到应用程序角色

    Snip

  • 单击应用程序角色显示名称

  • 取消选中复选框以禁用该角色

    Snip

  • 返回清单并根据需要更改appRoles部分

    Snip

  • 保存,应该已更新


欢迎来到 Stack Overflow。请阅读 如何使用 Markdown 或 HTML 格式化我的帖子? - Chris
@Chris 谢谢。我一定会读的... - Namujiji

0

你不能删除已启用的分配角色,你首先必须将标记 isEnable 设置为 false 并保存用于删除的角色清单,就像这样 -->"isEnabled": false在清单中,然后尝试删除整个 appRoles 部分。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接