【问题标题】:'Insufficient Privileges' error while using 'addKey' action in Azure AD Graph API在 Azure AD Graph API 中使用“addKey”操作时出现“权限不足”错误
【发布时间】:2018-05-07 12:20:03
【问题描述】:

我在 Azure AD 中注册了一个使用证书的应用程序。我正在尝试编写一个脚本,它将向应用程序添加一个新证书。这可用于在现有证书即将到期时添加新证书。

我正在尝试使用 Azure AD Graph API 的 AddKey 函数。此 api 的请求正文作为参数“证明”,它是由应用程序的现有证书签名的 JWT 断言。该文档说 JWT 中的“aud”声明应设置为“AAD Graph SPN”。这里的“AAD Graph SPN”是什么意思?

我尝试使用 JWT,其中“aud”设置为“00000002-0000-0000-c000-000000000000”。但我收到以下错误,

{
 "odata.error": {
    "code":"Authorization_RequestDenied",
     "message":{
        "lang":"en",
         "value":"Insufficient privileges to complete the operation."
      }
  }
}  

对此有什么想法吗?

我正在获取访问令牌以通过“Resource Owner Credentials Grant”流调用 Azure AD Graph API。要获取访问令牌,我使用的是 client_id “1950a258-227b-4e31-a9cf-717495945fc2”(Azure PowerShell 的知名客户端 ID)

我的脚本(出于部署目的)执行如下操作,

i) 如上所述获取访问令牌并使用初始证书在 Azure AD 中注册新应用程序。

ii) 当初始证书即将到期时,它应该向创建的应用程序添加一个新证书。

【问题讨论】:

    标签: microsoft-graph-api azure-ad-graph-api


    【解决方案1】:

    根据文档,您必须使用自签名 JWT 令牌来访问该 API:

    作为此服务操作的请求验证的一部分,证明 在执行操作之前验证是否拥有现有密钥 执行。证明由自签名的 JWT 令牌表示。这 请求应用程序需要生成一个自签名的 JWT 令牌 以下要求...

    “资源所有者凭据授予”在这种情况下不起作用。相反,请使用“客户端凭据授予”:

    https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-service-to-service

    您要更新的应用程序应该是用于获取此访问令牌的客户端 ID。

    另一种选择是直接使用应用程序对象上的PATCH 请求更新应用程序:

    https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/entity-and-complex-type-reference#application-entity

    使用此方法,您应该能够使用上述方法进行更新(用户凭据和外部客户端 ID)

    如果这有帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多