我按照本页上的示例使用 powershell 为我的 Azure AD 应用程序创建客户端 key :https://o365info.com/create-unlimited-client-secret/
它从这个命令开始:
Connect-MgGraph -作用域“Application.ReadWrite.All”
这给了我一个登录窗口,请求读取和写入所有应用程序的权限。
我没有(也不希望拥有)我公司所有应用程序的权限。我只需要将客户端 key 添加到我有权访问的一个应用程序中。
所以我想,“好吧,我会找到一种方法来只请求我的一个应用程序的范围。”但是当我查找help for my command时(Add-MgApplicationPassword
),这两个示例还要求 Application.ReadWrite.All
。
我修改一个应用程序的唯一方法是授予我修改公司 Azure Active Directory 中所有应用程序的权限,这似乎很疯狂。
如何调用Add-MgApplicationPassword
,但只有一个应用程序的权限?
(注意:我可以通过 UI 添加这些内容,但我需要能够通过 PowerShell 实现自动化。)
最佳答案
Note that: Microsoft Graph API permissions cannot be restricted to one application as it is granted for the entire tenant.
我同意@junnas,作为一种解决方法,您可以利用应用程序 API 权限“Application.ReadWrite.OwnedBy
”进行连接到带有应用程序上下文的 MgGraph。
- 通过授予
Application.ReadWrite.OwnedBy
权限,它允许管理此应用创建或拥有的应用。 - 通过此 API 权限,它可以创建应用程序并完全管理这些应用程序(读取、更新、更新应用程序 secret 和删除)。
- 但它将无法更新其不属于其所有者的应用程序。
我创建了一个 Azure AD 应用程序和 API 权限,如下所示:
使用上述应用程序,我创建了另一个应用程序:
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
客户端 key 已创建:
在 Azure 门户中:
现在,当我传递不拥有的其他应用程序的ObjectID时,我收到如下错误:
引用文献:
azure - Microsoft Graph to access only a specific set of users, not all - Stack Overflow作者:沉迅
Limit permissions to update a single Azure AD group via API - Microsoft Q&A作者:ShivaniRai-MSFT
关于azure - 添加 OAuth 客户端 key 的 MS Graph 权限过于广泛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76775567/