如何不创建Azure应用就通过Graph API向OneDrive上传文件?
解答
1. 使用Graph Explorer获取的访问令牌进行上传是否存在安全隐患?
存在有限场景下的安全风险,核心问题包括:
- 令牌权限范围过大:Graph Explorer默认申请的权限通常远高于上传文件所需的最小权限(Files.ReadWrite),如果令牌泄露,攻击者可以访问你授权给Graph Explorer的所有资源,包括邮箱、日历、全部OneDrive文件等
- 令牌泄露风险:如果你把硬编码了令牌的脚本上传到代码仓库、或者发送给其他人,会直接导致你的账号资源被未授权访问
- 该令牌有效期仅1小时左右,不支持自动刷新,仅适合临时一次性使用,完全无法支撑长期自动化运行的场景
2. 哪怕是CLI脚本,也必须在Azure中注册应用吗?
不是必须,分使用场景选择方案即可:
- 临时单次使用:不需要注册应用,用手动获取的临时令牌(比如Graph Explorer令牌)即可满足需求
- 长期自动化运行:
- 优先选择注册应用的方案,可以精确分配最小必需权限,稳定性和安全性更高
- 如果你确实没有应用注册权限,可以用Microsoft Graph的设备授权流,不需要注册应用,只需要运行脚本时按照提示在浏览器完成个人账号授权,就可以获取支持自动刷新的有效令牌,比手动复制Graph Explorer令牌的方案易用性高很多
另外补充你遇到的az account get-access-token返回401的原因:az cli默认获取的是Azure资源管理接口的令牌,受众为management.azure.com,和Graph API要求的受众graph.microsoft.com不匹配,你可以执行az account get-access-token --resource https://graph.microsoft.com获取Graph接口专用的令牌,只要你的账号具备对应OneDrive的操作权限,用这个令牌即可正常调用上传接口。
内容的提问来源于stack exchange,提问作者Allen Johnson
相关产品推荐
相关产品推荐

