Outlook移动端外接程序使用MS Graph API实现无交互SSO可行性咨询
Outlook 移动端外接程序 Graph API 无交互访问方案解答
核心结论
目前iOS等移动端Outlook确实暂不支持基于OfficeRuntime.Auth.getAccessToken的原生SSO方案,但存在可落地的无用户交互MS Graph API调用方案,无需改变用户现有使用习惯。
优先推荐方案:服务端令牌兑换实现无交互Graph访问
该方案完全复用你现有移动端已经跑通的令牌获取逻辑,对接成本极低:
- 首先在Azure AD应用注册后台给你的外接程序应用配置所需的MS Graph权限(如
Mail.ReadWrite、Mail.Send等),申请管理员全局同意,避免用户侧触发授权弹窗 - 移动端外接程序继续使用原有的office-js令牌获取接口拿到Exchange身份令牌,将该令牌传输到你的后端服务
- 后端服务通过Azure AD的on-behalf-of流,将传入的Exchange令牌兑换为MS Graph访问令牌,即可直接调用你需要的所有邮件相关Graph接口,实现邮件移动、发送等原有功能
- 全程没有任何用户交互步骤,功能表现和原有Outlook REST API实现完全一致
备选兼容方案:分平台适配逻辑
如果受架构限制无法落地服务端兑换方案,可采用分平台兼容的降级逻辑:
- 代码中先通过
Office.context.requirements.isSetSupported('IdentityAPI', '1.3')判断当前运行环境的API支持能力 - 支持IdentityAPI 1.3的平台(桌面端、部分安卓端)直接用原生
OfficeRuntime.Auth.getAccessToken获取SSO令牌调用MS Graph - 不支持的移动端平台暂时沿用现有Outlook REST API逻辑,Outlook REST API实际关停时间已多次延期,当前仍可稳定使用,可等待后续移动端Outlook完成IdentityAPI 1.3支持后再完全切换到原生SSO方案
注意:采用服务端令牌兑换方案时,需做好令牌的缓存、过期刷新处理,所有令牌传输必须走HTTPS链路,避免敏感数据泄露。
内容的提问来源于stack exchange,提问作者test35423532523523
相关产品推荐
相关产品推荐

