Azure active directory 获取仅限于请求应用程序的用户的应用程序角色

Azure active directory 获取仅限于请求应用程序的用户的应用程序角色,azure-active-directory,microsoft-graph-api,Azure Active Directory,Microsoft Graph Api,我正在为应用程序使用OAuth 2 ROPC流对用户进行身份验证,我想知道为该用户分配了哪些角色,以便应用程序知道要启用/禁用的功能 我已经成功地获得了用户的所有应用程序角色,方法是在页眉中使用当前访问令牌点击REST url。然而,我真的不关心任何角色,除了用户对他发出请求的应用程序的角色之外。是否有办法将其限制为发出请求的应用程序或特定的客户端id?您可以使用以下方法: GEThttps://graph.microsoft.com/v1.0/me/appRoleAssignments?$fi

我正在为应用程序使用OAuth 2 ROPC流对用户进行身份验证,我想知道为该用户分配了哪些角色,以便应用程序知道要启用/禁用的功能

我已经成功地获得了用户的所有应用程序角色,方法是在页眉中使用当前访问令牌点击REST url。然而,我真的不关心任何角色,除了用户对他发出请求的应用程序的角色之外。是否有办法将其限制为发出请求的应用程序或特定的客户端id?

您可以使用以下方法:

GEThttps://graph.microsoft.com/v1.0/me/appRoleAssignments?$filter=resourceId eq

要获取应用程序对象id,请执行以下操作:


GEThttps://graph.microsoft.com/v1.0/applications?$filter=appId eq''和$select=id
另一个答复不正确,您需要使用应用程序对应的服务主体的
对象id
进行筛选,而不是应用程序的
对象id

首先,使用下面的查询获取应用程序对应的服务主体的
对象ID
,替换您的

GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq '<client_id>'&$select=id

此问题有任何更新吗?@JoyWang正在测试答案。第二步的结果是错误:{“代码”:“Request\u ResourceNotFound”,…..@ChristopherPisz您能确保用户拥有目标应用程序中的角色吗?从错误中看,他没有。@JoyWang实际上,但我的回答是正确的,他的问题是授权:)我有一个应用程序角色,该应用程序是客户端id。我自己配置了它,如果我在没有fi的情况下对我的所有角色进行查询,就可以看到它LTERT让它开始工作。必须在PostmanResult中使用它。第一步的结果是“错误”:{“代码”:“Authorization_RequestDenied”,..@ChristopherPisz请共享完整的错误详细信息和响应状态代码。{“错误”:{“代码”:“Authorization_RequestDenied”,“消息”:“完成操作的权限不足”,“innerError”:{“date”:“2021-01-06T15:44:19”,“请求id”:“客户端请求id”:“}}}}}状态码-403禁止
GET https://graph.microsoft.com/v1.0/me/appRoleAssignments?$filter=resourceId eq 978xxxx383d52bf