C# AAD图形API权限问题

C# AAD图形API权限问题,c#,azure,azure-active-directory,azure-ad-graph-api,C#,Azure,Azure Active Directory,Azure Ad Graph Api,我真的希望有人能帮我解决一些我不熟悉的许可问题。 我目前正在开发一个具有Azure Active Directory访问权限的web应用程序。到目前为止一切正常。 然后,我尝试实现从组到角色的转换,这在一些测试中运行良好。 但现在-在不更改任何权限的情况下,我始终会收到: “:{”code:“Authorization_RequestDenied”,“message:{”lang:“en”,“value:“权限不足,无法完成操作。”},” 有时这是requestId和date,有时不是 触发此权

我真的希望有人能帮我解决一些我不熟悉的许可问题。 我目前正在开发一个具有Azure Active Directory访问权限的web应用程序。到目前为止一切正常。 然后,我尝试实现从组到角色的转换,这在一些测试中运行良好。 但现在-在不更改任何权限的情况下,我始终会收到:

“:{”code:“Authorization_RequestDenied”,“message:{”lang:“en”,“value:“权限不足,无法完成操作。”},”

有时这是requestId和date,有时不是

触发此权限问题的代码是:

var adClient = Instance.GetADClient(tenantID, signedInUserID, userObjectID);
var pagedCollection = await adClient.Users.GetByObjectId(userObjectID).MemberOf.ExecuteAsync();
如果我尝试使用

GetMemberGroupsAsync()

因此,无论检索哪种类型的成员,这似乎都是一个权限问题

有人知道我遗漏了什么,或者我如何进一步调试它吗

非常非常感谢你的任何想法


Tom

此错误表示您尚未请求或同意授予应用程序访问这些API的权限

注册应用程序时,必须定义应用程序对其调用的API的权限。在这种情况下,如果调用AAD Graph API,则必须请求某些作用域,您可以找到这些作用域

为需要调用的API选择适当的作用域后,您需要确保同意您的应用程序,这最终允许您的应用程序实际执行其请求访问的操作

请注意,某些作用域特别需要租户的管理员同意

如果您正在寻找与权限相关的调试问题,那么一个好的起点是解码您的访问令牌,并查看
scp
声明,其中包含已授予您的应用程序的作用域。我通常用于解码访问令牌


如果您在令牌中看到您试图进行的API调用的正确作用域,那么您应该可以开始了!请告诉我这是否有帮助。

此错误表示您尚未请求或同意授予应用程序访问这些API的权限

注册应用程序时,必须定义应用程序对其调用的API的权限。在这种情况下,如果调用AAD Graph API,则必须请求某些作用域,您可以找到这些作用域

为需要调用的API选择适当的作用域后,您需要确保同意您的应用程序,这最终允许您的应用程序实际执行其请求访问的操作

请注意,某些作用域特别需要租户的管理员同意

如果您正在寻找与权限相关的调试问题,那么一个好的起点是解码您的访问令牌,并查看
scp
声明,其中包含已授予您的应用程序的作用域。我通常用于解码访问令牌


如果您在您的令牌中看到您试图进行的API调用的正确范围,那么您应该可以开始了!如果这有帮助,请告诉我。

感谢Shawn Tabrizi,我找到了错误源。 如果您有类似的问题,请当心您点击

授予权限

在修改你的Azure广告应用程序权限后。可能有很多像我这样的人在监督

以下是Shawn提供的图像:


再次感谢Shawn的帮助!

感谢Shawn Tabrizi,我找到了错误源。 如果您有类似的问题,请当心您点击

授予权限

在修改你的Azure广告应用程序权限后。可能有很多像我这样的人在监督

以下是Shawn提供的图像:


再次感谢Shawn的帮助!

Hmm,我知道所有作用域的事情,也尝试设置应用程序的所有权限只是为了确保-没有成功。但我注意到令牌没有设置任何作用域-没有
scp
在设置新权限后您是否同意您的应用程序?删除后您可以共享您的令牌吗隐藏个人信息?好吧,这里真的有点奇怪。我刚刚恢复到我没有使用这些组的状态(虽然说它曾经工作过一次),但现在也是一样的问题。在设置新权限之后(我们正在讨论在Azure portal中为我注册的广告应用程序设置权限,对吗?!)我不需要同意任何新的东西。:-?这是标记:
{typ:“JWT”,alg:“RS256”,x5t:“\u UgqXG\u tMLduSJ1T8caHxU7cOtc”,kid:“\u UgqXG\u tMLduSJ1T8caHxU7cOtc”。{aud:https://graph.windows.net,iss:https://sts.windows.net/REMOVED/,iat:1489008789,nbf:1489008789,exp:1489012689,aio:“不适用”,appid:“已删除”,appidacr:“1”,e_exp:10800,idp:https://sts.windows.net/REMOVED/,oid:“已删除”,sub:“已删除”,tid:“已删除”,版本:“1.0”}
当你被重定向到Azure AD时,你可以通过在URL中添加
prompt=approve
prompt=admin\u approve
来强制同意。嗯,我知道所有作用域的事情,也尝试设置应用程序的所有权限,只是为了确保没有成功。但我注意到令牌没有设置任何作用域-没有
scp
在设置新权限后,您是否同意您的应用程序?在删除个人信息后,您是否可以共享您的令牌?好的,这里真的有点奇怪。我刚刚恢复到我没有使用组的状态(尽管它曾经工作过),但现在是相同的问题。在设置新权限后(我们谈论的是在Azure portal中为我注册的广告应用程序设置权限的权利?!)我不必同意任何新的东西。:-?这是标记:
{typ:“JWT”,alg:“RS256”,x5t:“uugqxg_tMLduSJ1T8caHxU7cOtc”,kid:“uugqxg_tMLduSJ1T8caHxU7cOtc”}。{aud:https://graph.windows.net,iss:https://sts.windows.net/REMOVED/",