Azure active directory 使用代表发送授权访问Intune graph api会将响应视为未经授权

Azure active directory 使用代表发送授权访问Intune graph api会将响应视为未经授权,azure-active-directory,microsoft-graph-api,Azure Active Directory,Microsoft Graph Api,我跟踪了样本 在web api中,创建了另一个端点以从url访问Intune应用程序保护策略 https://graph.microsoft.com/beta/deviceAppManagement/managedAppPolicies, 在azure中,为应用程序提供了访问Graph API的权限 在对AquireTokenAsync的调用中,将资源Id更改为https://graph.microsoft.com/ 这返回了包含以下内容的JWT令牌: “aud”:https://graph.m

我跟踪了样本

在web api中,创建了另一个端点以从url访问Intune应用程序保护策略
https://graph.microsoft.com/beta/deviceAppManagement/managedAppPolicies
, 在azure中,为应用程序提供了访问Graph API的权限

在对
AquireTokenAsync
的调用中,将资源Id更改为
https://graph.microsoft.com/

这返回了包含以下内容的JWT令牌:

“aud”:https://graph.microsoft.com/",
“scp”:“DeviceManagementApps.ReadWrite.All User.Read”,
然而,获取端点

https://graph.microsoft.com/beta/deviceAppManagement/managedAppPolicies 
返回
401的HTTP响应


缺少什么?

这通常意味着以下一个或两个问题:

  • 你需要获得。
    DeviceManagementApps.ReadWrite.All
    作用域要求管理员同意权限,然后普通用户才能授权该作用域

  • 你的应用注册没有在Azure中定义正确的作用域。确保您的注册是Microsoft Graph的选择范围,而不是Azure AD Graph API。这是两个不同的API,它们之间的区别不仅仅是资源URI


还要注意,Intune API不支持客户端凭据授予(也称为应用程序范围)。只能使用委派权限(授权代码或隐式授权)调用这些端点

这通常意味着以下一个或两个问题:

  • 你需要获得。
    DeviceManagementApps.ReadWrite.All
    作用域要求管理员同意权限,然后普通用户才能授权该作用域

  • 你的应用注册没有在Azure中定义正确的作用域。确保您的注册是Microsoft Graph的选择范围,而不是Azure AD Graph API。这是两个不同的API,它们之间的区别不仅仅是资源URI


还要注意,Intune API不支持客户端凭据授予(也称为应用程序范围)。只能使用委派权限(授权代码或隐式授权)调用这些端点

我获得了同时列出两个权限(DeviceManagementApps.ReadWrite.All User.Read)的同意对话框。在azure应用程序中,我还授予了Microsoft graph api权限。运气不好,我仍然收到相同的错误。您的帐户是否有权限从Intune执行这些活动?换句话说,此帐户是“全局管理员”还是“Intune服务管理员”?是的,我已通过邮递员尝试授权代码授予流,并且我能够访问Intune图形端点。Doh!我刚刚意识到演示使用的是客户端凭据(又称应用程序权限)。应用程序范围为。我获得了“同意”对话框,其中列出了两个权限(DeviceManagementApps.ReadWrite.All User.Read)。在azure应用程序中,我还授予了Microsoft graph api权限。运气不好,我仍然收到相同的错误。您的帐户是否有权限从Intune执行这些活动?换句话说,此帐户是“全局管理员”还是“Intune服务管理员”?是的,我已通过邮递员尝试授权代码授予流,并且我能够访问Intune图形端点。Doh!我刚刚意识到演示使用的是客户端凭据(又称应用程序权限)。应用程序范围为。