如何在没有用户交互的情况下对Azure Active Directory进行身份验证?

时间:2017-03-15 23:50:35

标签: rest azure authentication oauth-2.0 azure-active-directory

我希望在没有用户交互的情况下获取访问令牌,以便自动执行对Azure服务(计算,网络等)的REST API调用。 In the documentation列出了几种身份验证方案。最适合我的用例的是“守护进程或Web应用程序的Web应用程序”。

我跟着instructions请求访问令牌:首先我在Azure Active Directory中注册了一个应用程序。然后我创建了一个与应用程序ID(client_id参数)关联的密钥(client_secret参数)。我还获得了App ID URI(资源参数)。我使用所有这些参数来创建对Azure AD的/ token端点的POST请求。但是我收到以下错误消息:

{
    "code":"InvalidAuthenticationTokenAudience",
    "message":"The access token has been obtained from wrong audience or resource 'https://solutionsmosaixsoft.onmicrosoft.com/<APP_ID_URI>'. It should exactly match (including forward slash) with one of the allowed audiences 'https://management.core.windows.net/','https://management.azure.com/'."
}

我做错了什么?我是否将资源参数设置为错误的值?

2 个答案:

答案 0 :(得分:1)

resource参数告诉应用程序获取令牌的位置(请求访问令牌的资源的标识符)。如果要获取令牌以调用Azure Service Management API,可以将资源设置为https://management.core.windows.net/

修改

如果要调用的API是Microsoft提供的API,则该资源是已知的,例如:

如果要调用您创建的API应用程序,可以使用客户端ID或资源WebAPI的App ID URI(在Azure管理门户中的Azure AD应用程序的配置选项卡中查找它们)。

您可以参考以下链接获取代码示例:

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-code-samples

答案 1 :(得分:0)

您需要向令牌端点发出POST请求。

resource参数必须是您要访问的API的资源URI,而不是您的。

  • Azure AD Graph API:https://graph.windows.net/
  • Microsoft Graph API:https://graph.microsoft.com/