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

Flutter移动端如何通过已配置Azure AD的Web应用登录并获取访问令牌

方案解答

你的需求完全可以实现,不需要额外新增太多适配改造,核心走OAuth 2.0 授权码流+PKCE即可,具体实现逻辑如下:

核心实现路径

  • 无需单独为移动端注册新的Azure AD应用,直接复用现有Web应用对应的Azure AD客户端ID即可,只需要提前在Azure AD的应用注册配置中补加移动端的重定向URI,格式可选用自定义Scheme格式,比如com.your.app://auth/callback,也可以用微软推荐的msauth://<你的应用包名>/<base64编码的应用签名哈希>,只要和Flutter端配置的回调地址保持一致即可。
  • Flutter端不需要自行开发Azure AD登录页面,直接通过认证SDK拉起系统内置浏览器,加载现有Web应用对应的Azure AD登录入口,用户完成身份校验后,浏览器会自动将授权码回传给Flutter应用。
  • 拿到授权码后,Flutter端直接向你现有部署的Identity Server的令牌端点发起请求,即可交换得到Identity Server签发的访问令牌、刷新令牌,该令牌和Web端登录后获取的令牌效力完全一致,可直接用于调用Web应用的API接口。

Flutter端落地建议

直接使用flutter_appauth封装包完成整个认证流程,不需要自行处理浏览器拉起、授权码捕获、令牌交换的逻辑,核心配置参数如下:

配置项要求:
授权端点:和现有Web应用使用的Azure AD授权端点保持一致
令牌端点:填现有Identity Server的令牌端点地址
客户端ID:和Web端使用的Azure AD客户端ID完全一致
重定向URI:提前在Azure AD中配置好的移动端回调地址
Scope:包含Web端API对应的权限scope,以及openid、profile、offline_access等OIDC必填scope
必须开启PKCE配置,这是移动端这类公共客户端的强制安全要求

备选实现方案

如果出于权限隔离要求不想复用Web端的Azure AD应用配置,也可以单独为移动端注册一个Azure AD应用,给该应用授予访问现有Web API的权限,移动端登录拿到Azure AD签发的令牌后,再向Identity Server发起兑换请求,拿到Identity Server签发的访问令牌即可。该方案比复用配置的方案多了一步令牌兑换流程,复杂度更高,没有特殊需求优先选择第一种方案。

注意事项

  • 提前确认你的Identity Server已经开启了公共客户端的授权码流+PKCE支持,没有拦截移动端的认证请求
  • 配置的移动端重定向URI需要同时在Azure AD应用注册、Identity Server的客户端配置中录入,避免回调校验失败
  • 访问令牌过期后可直接通过刷新令牌向Identity Server换发新令牌,不需要用户重复登录

内容的提问来源于stack exchange,提问作者Low Chen Thye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:24:05