azure - 添加 OAuth 客户端 key 的 MS Graph 权限过于广泛

标签 azure powershell azure-active-directory microsoft-graph-api

我按照本页上的示例使用 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 权限,如下所示:

enter image description here

使用上述应用程序,我创建了另一个应用程序:

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

enter image description here

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

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

{
"displayName": "ClientSecretApp"
}

enter image description here

我使用以下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 已创建:

enter image description here

在 Azure 门户中:

enter image description here

现在,当我传递不拥有的其他应用程序的ObjectID时,我收到如下错误:

enter image description here

引用文献:

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/

相关文章:

.net - 是否可以在客户端凭证流程中为应用程序注册赋予角色?

powershell - Powershell-创建计划任务以作为本地系统/服务运行

powershell - echo "string"> Windows PowerShell 中的文件将不可打印的字符附加到文件

azure - 微软Azure : How to setup Contributor-role User Groups for separate Resource Groups?

azure - 创建 API 以对 Azure Active Directory 的用户进行身份验证

azure - 在 Windows Azure 上交换插槽但不复制 AppSettings

Azure AD B2C : Bad Request - Request Too Long HTTP Error 400. 请求 header 的大小太长。登录后

.net - AAD B2C : Search Users by PrincipalName

python - 无法将先知模型从 ADLS 读取到 python

regex - 将目录更改为与 powershell 中的正则表达式匹配的文件夹