azure 添加OAuth客户端密钥的MS Graph权限太宽

mjqavswn  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(103)

我正在按照此页面上的示例使用powershell为我的Azure AD应用程序创建客户端密码:https://o365info.com/create-unlimited-client-secret/
它以这个命令开始:
第一个月
这给了我一个登录窗口,请求对所有应用程序的读写权限。
我没有权限(也不想拥有权限)使用我公司的所有应用程序。我只需要将客户端密码添加到我有权限的一个应用程序中。
所以我想,“好吧,我会找到只为我的一个应用程序请求作用域的方法。”但是当我查找help for my commandAdd-MgApplicationPassword)时,两个示例都请求Application.ReadWrite.All
我修改一个应用程序的唯一方法是授予我修改公司Azure Active Directory中所有应用程序的权限,这似乎很疯狂。

如何调用Add-MgApplicationPassword,但只有一个应用程序的权限?

(NOTE:我可以通过UI添加这些,但我需要能够通过PowerShell自动化。

fae0ux8s

fae0ux8s1#

注意:Microsoft Graph API权限不能限制为一个应用程序,因为它是为整个租户授予的。

我同意 @junnas 的说法,作为一种变通方法,您可以使用Application API权限“Application.ReadWrite.OwnedBy”连接到具有应用上下文的MgGraph

  • 通过授予Application.ReadWrite.OwnedBy权限,它允许管理此应用程序创建或拥有的应用程序。
  • 通过此API权限,它可以创建应用程序并完全管理这些应用程序(读取,更新,更新应用程序机密和删除)。
  • 但它将无法更新它不是所有者的应用程序。

我创建了一个Azure AD应用程序和API权限,如下所示:
x1c 0d1x的数据

  • 使用上面的应用程序,我创建了另一个应用程序:*
https://login.microsoftonline.com/TenanTID/oauth2/v2.0/token

client_id:ClientID
client_secret:ClientSecret
scope:https://graph.microsoft.com/.default
grant_type:client_credentials

字符串



我成功创建了新应用程序:

POST https://graph.microsoft.com/v1.0/applications
Content-type : application/json

{
"displayName": "ClientSecretApp"
}



我使用下面的PowerShell脚本将密码添加到应用程序中:

$ApplicationId = "ClientID"
$tenantID = "TenantID"

Connect-MgGraph -ClientId $ApplicationId -TenantId $tenantID -CertificateThumbprint "Thumbprint"

$passwordCred = @{
   displayName = 'testsecret'
   endDateTime = (Get-Date).AddMonths(6)
}

$secret = Add-MgApplicationPassword -ApplicationId $ObjectIDoftheOwnedApplication -PasswordCredential $passwordCred
$secret | Format-List

Client Secret已创建:



在Azure门户中:
x1c4d 1x的
现在,当我传递其他应用程序的ObjectID时,它不是所有者,我得到了如下错误:


参考文献:

作者:Hury Shen
Limit permissions to update a single Azure AD group via API - Microsoft Q&A通过ShivaniRai-MSFT

相关问题