如何实现从Azure AD读取组织用户邮箱的Web应用集成?
端到端实现Azure AD用户邮箱导入Web应用的流程步骤
一、Azure AD应用注册与权限配置
- 登录Azure门户,进入Azure Active Directory > 应用注册 > 新注册
- 设置应用名称,账户类型选择「任何组织目录中的账户」(适配企业租户场景)
- 重定向URI选择Web类型,填入你的Web应用回调地址
- 注册完成后,进入该应用的API权限 > 添加权限
- 选择Microsoft Graph > 应用权限(批量导入场景推荐使用应用权限,无需用户持续交互)
- 根据需求勾选权限:如
Mail.ReadBasic.All(仅读取邮箱基本信息)或User.Read.All(读取完整用户信息含邮箱),优先选择最小必要权限 - 点击授予管理员同意(需由企业SysAdmin完成此操作,确保应用具备访问租户用户数据的权限)
二、Web应用集成Azure AD身份验证
- 在Web应用中配置Azure AD身份验证(基于OAuth2.0/OpenID Connect协议):
- 从Azure应用注册页面获取客户端ID、租户ID,并在「证书和密码」中生成客户端密钥
- 实现管理员登录流程:引导企业SysAdmin跳转至Azure AD登录页面,完成身份验证后获取有效访问令牌
三、调用Microsoft Graph API导入用户邮箱
- 使用应用权限令牌调用Microsoft Graph API获取用户邮箱数据:
- 核心请求示例(伪代码):
import requests auth_token = "获取到的应用权限访问令牌" request_headers = {"Authorization": f"Bearer {auth_token}"} api_endpoint = "https://graph.microsoft.com/v1.0/users?$select=mail,displayName,id" response = requests.get(api_endpoint, headers=request_headers) user_list = response.json().get("value", []) # 将user_list中的邮箱信息写入Web应用数据库 for user in user_list: save_user_to_db(user["mail"], user["displayName"])
- 核心请求示例(伪代码):
- 处理分页:若租户用户数量较多,API会返回分页标识
@odata.nextLink,需循环请求该链接直至获取全部用户数据
四、Azure Marketplace发布(可选)
若需让企业租户快速发现并部署你的应用,可将注册的Azure AD应用发布到Azure Marketplace:
- 登录Azure Marketplace发布者门户,创建SaaS应用产品
- 关联已注册的Azure AD应用,配置权限要求、定价等信息
- 提交审核,通过后企业管理员可在Marketplace中直接安装应用,自动完成权限授予流程
内容的提问来源于stack exchange,提问作者alexarsh
相关产品推荐
相关产品推荐

