在 Azure Active Directory 中删除应用程序的 AppRole
Deleting an Application's AppRole in Azure Active Directory
从应用程序的清单中删除 AppRole 会产生错误为
的 400 错误请求
Property value cannot be deleted unless it is disabled first.
当我将 isEnabled 属性 设置为 false 然后点击保存时,我通过查看浏览器开发人员工具获得了一个成功的 200 OK 保存:
重新加载编辑清单屏幕后,isEnabled
属性 仍然是 true
,如果您在浏览器开发人员工具中查看 PUT 响应,它会返回 true
还有。
如何删除 appRole 而不必删除并重新创建整个应用程序?
更新
我提出了以下 bug。
这似乎是新门户中的错误。保存操作不会在服务器端将 isEnabled
保存为 false。任何反馈,您可以 post 到 here .
目前,您可以使用 Azure AD 经典门户修改清单中的应用程序角色(下载清单,然后上传已更改的清单)。删除经典门户中的应用程序角色在我的环境中工作正常。如果有帮助,请告诉我。
在此问题得到解决之前,有两种方法可以解决此问题:
使用 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
另一种选择是使用 Azure AD Graph 资源管理器并对应用程序对象发出两个 PATCH
请求。第一个 PATCH
请求应将应用角色的 isEnabled
属性设置为 false
。然后第二个 PATCH
请求可以删除应用程序角色(即包括除已禁用的应用程序角色之外的所有现有应用程序角色)。
此错误现已修复。您所要做的就是将 isEnabled
设置为 false 并保存。然后您可以删除角色并再次保存。不需要解决方法。
要删除应用程序角色:
- 转到应用程序清单。
- 要删除的App Role,将
isEnabled
的值改为false。
- 保存清单。
- 删除那个批准。
- 再次保存。
我收到了相同的错误消息 Property value cannot be deleted unless it is disabled first.
,因为我在一个页面上创建了范围,并试图在另一个网页上的清单中手动添加它。我几乎不知道清单会自动更新,我只需要重新加载它。
您不能删除已启用的已分配角色,您首先必须将标志 isEnable 设置为 false 并像这样保存要删除的角色的清单 -->"isEnabled": false
在清单中,现在尝试删除整个 appRoles 部分。
这是一个两步过程,但很有效。
从应用程序的清单中删除 AppRole 会产生错误为
的 400 错误请求Property value cannot be deleted unless it is disabled first.
当我将 isEnabled 属性 设置为 false 然后点击保存时,我通过查看浏览器开发人员工具获得了一个成功的 200 OK 保存:
重新加载编辑清单屏幕后,isEnabled
属性 仍然是 true
,如果您在浏览器开发人员工具中查看 PUT 响应,它会返回 true
还有。
如何删除 appRole 而不必删除并重新创建整个应用程序?
更新
我提出了以下 bug。
这似乎是新门户中的错误。保存操作不会在服务器端将 isEnabled
保存为 false。任何反馈,您可以 post 到 here .
目前,您可以使用 Azure AD 经典门户修改清单中的应用程序角色(下载清单,然后上传已更改的清单)。删除经典门户中的应用程序角色在我的环境中工作正常。如果有帮助,请告诉我。
在此问题得到解决之前,有两种方法可以解决此问题:
使用 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
另一种选择是使用 Azure AD Graph 资源管理器并对应用程序对象发出两个
PATCH
请求。第一个PATCH
请求应将应用角色的isEnabled
属性设置为false
。然后第二个PATCH
请求可以删除应用程序角色(即包括除已禁用的应用程序角色之外的所有现有应用程序角色)。
此错误现已修复。您所要做的就是将 isEnabled
设置为 false 并保存。然后您可以删除角色并再次保存。不需要解决方法。
要删除应用程序角色:
- 转到应用程序清单。
- 要删除的App Role,将
isEnabled
的值改为false。 - 保存清单。
- 删除那个批准。
- 再次保存。
我收到了相同的错误消息 Property value cannot be deleted unless it is disabled first.
,因为我在一个页面上创建了范围,并试图在另一个网页上的清单中手动添加它。我几乎不知道清单会自动更新,我只需要重新加载它。
您不能删除已启用的已分配角色,您首先必须将标志 isEnable 设置为 false 并像这样保存要删除的角色的清单 -->"isEnabled": false
在清单中,现在尝试删除整个 appRoles 部分。
这是一个两步过程,但很有效。