首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MS Graph中无法通过ROPC访问站点和onedrive

在MS Graph中无法通过ROPC访问站点和onedrive
EN

Stack Overflow用户
提问于 2021-02-15 08:55:16
回答 1查看 111关注 0票数 0

我使用了以下代码来获取MS Graph访问令牌:

代码语言:javascript
复制
# Resource Owner Password Credentials (ROPC)
def ropc_flow_session(AUTHORITY, RESOURCE, username, password, CLIENT_ID):
  context = adal.AuthenticationContext(AUTHORITY)
  token_response = context.acquire_token_with_username_password(RESOURCE, username, password, CLIENT_ID)

  session = requests.Session()
  session.headers.update({'Authorization': f'Bearer {token_response["accessToken"]}'})
  
  return session

RESOURCEAUTHORITY值是:

代码语言:javascript
复制
RESOURCE = 'https://graph.microsoft.com'
AUTHORITY = F"https://login.microsoftonline.com/{tenant}"

当我调用ropc_flow_session函数时,它返回包含以下标题的会话:

代码语言:javascript
复制
{'User-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer {ACCESS_TOKEN_VALUE}'}

所以我的理解是,我可以访问注册的应用程序。

当我试图用me调用https://graph.microsoft.com/v1.0/me时,错误消息是:

代码语言:javascript
复制
 {'error': {'code': 'Authorization_RequestDenied',
            'message': 'Insufficient privileges to complete the operation.',

我试图通过https://graph.microsoft.com/v1.0/sites/{TENANT}:/sites/{SITE_NAME}:/drives访问用户是所有者的共享库,并引发:

代码语言:javascript
复制
 {'error': {'code': 'accessDenied',
            'message': 'Access denied. You do not have permission to perform this action or access this resource.',

这是已注册的API权限列表:

根据错误消息,我似乎已经连接为一个应用程序,但我使用了ROPC,并传递了特定用户的用户名和密码。任何想法都是感激的

更新这是我从jwt.ms获得的解码令牌:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-17 03:52:04

我在评论中已经提到过,但为了让其他有同样问题的人明白,我在这里作了更多的说明。在我的例子中,问题是注册的Azure应用程序有两个所有者。一个是我自己的工作帐户,另一个是服务帐户。我在工作帐户中添加了委托权限,它显示在API权限列表中。但是当我检查Enterprise applications链接时,它显示所有的用户同意权限仅限于一个特定的用户。

您可以单击Enterprise applications并查看user consent选项卡来检查该选项卡。

它有两个解决办法来解决这个问题:

  1. 请求管理员也为其他用户(在我的例子中是一个服务帐户)授予
  2. 登录权限(在我的例子中是服务帐户)并添加相同的API权限。

我希望这能帮助其他有同样问题的人--

谢谢@shiva-keshav-varma对评论的有益建议

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66205096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档