You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Exchange Online PowerShell V2 带刷新令牌的令牌认证咨询

Exchange Online V2模块无交互免存密自动化认证方案

优先方案:Azure托管身份认证(零凭据存储)

  • 适用场景:脚本运行在Azure生态资源上(Azure VM、自动化账户、Function App、容器实例等)
  • 实现逻辑:不需要在服务器存储任何密码、密钥、证书私钥,由Azure平台本身托管身份凭据,模块自动处理令牌获取和续期,完全无人工交互
  • 配置步骤:
    1. 为运行脚本的Azure资源开启系统分配托管身份
    2. 在Azure AD权限管理中,给该托管身份分配Office 365 Exchange Online资源下的Exchange.ManageAsApp应用权限,完成租户管理员同意
    3. 脚本中直接使用以下命令连接,无需传入任何凭据:
Connect-ExchangeOnline -ManagedIdentity -Organization "<你的租户默认域名,比如contoso.onmicrosoft.com>"

自托管场景方案:Azure AD应用+客户端证书认证

  • 适用场景:脚本运行在本地服务器、第三方云主机等非Azure环境,无法使用托管身份
  • 实现逻辑:不需要存储用户密码或明文客户端密钥,用操作系统证书存储保护私钥,安全性远高于明文凭据存储
  • 配置步骤:
    1. 在Azure AD注册单租户应用,同样为该应用分配Exchange.ManageAsApp应用权限,完成管理员同意
    2. 生成自签名证书,将公钥上传到应用的「证书和密钥」-「证书」板块,私钥导入服务器本地证书存储(Windows存LocalMachine\My路径,Linux存受权限保护的证书目录),配置ACL仅给运行脚本的服务账号授予私钥读取权限
    3. 脚本中使用以下命令连接:
Connect-ExchangeOnline -AppId "<注册的应用客户端ID>" -CertificateThumbprint "<本地存储证书的指纹>" -Organization "<你的租户默认域名>"

兼容旧业务方案:Refresh令牌自动续期(用户上下文场景)

  • 适用场景:必须使用用户身份上下文而非应用身份执行脚本,无法使用上述应用级认证方案
  • 实现逻辑:仅需首次执行一次交互式登录拿到refresh token,加密存储在服务器端,后续自动用refresh token换发新的access token和refresh token,无需存储用户密码
  • 配置要点:
    1. 首次交互登录时申请offline_access委派权限,拿到长期refresh token后,用操作系统原生加密能力加密存储(Windows用DPAPI,Linux用文件系统权限+本地密钥加密)
    2. 脚本运行时先调用Azure AD令牌端点,用存储的refresh token换取最新access token,同时用返回的新refresh token覆盖旧的存储值实现自动续期
    3. 拿到有效access token后直接调用命令连接:
Connect-ExchangeOnline -AccessToken $freshAccessToken -Organization "<你的租户默认域名>"

注意事项

  • 所有应用级认证(托管身份、证书认证)默认拥有租户级Exchange管理权限,务必遵循最小权限原则配置角色,不要直接授予全局管理员权限
  • 不要使用ROPC密码流实现认证,该模式需要存储用户明文密码,且在开启MFA的租户下完全无法使用,属于微软明确不推荐的过时认证方式

内容的提问来源于stack exchange,提问作者moszti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 16:34:12