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

如何在Power Pages中调用Microsoft Graph API(Booking)且不暴露访问令牌

在Power Pages中安全调用Microsoft Graph Booking API的实现方式

当然有可行方案,核心思路是通过Power Pages的后端逻辑中转请求,彻底避免前端直接接触访问令牌。以下是具体落地方式:

1. 自定义Web API作为后端代理

在Power Apps环境中搭建自定义Web API,作为前端与Graph API的中间层:

  • 先在Azure AD注册应用,添加Microsoft Graph的Booking相关应用权限(比如Bookings.Read.All、BookingsAppointment.ReadWrite.All),并完成管理员同意。
  • 在自定义Web API的代码里,用客户端凭据流获取Graph API的访问令牌(无需用户交互)。
  • 编写API端点,接收Power Pages前端的请求,用拿到的令牌调用Graph Booking API,再把结果返回给前端。
  • 前端仅需通过fetch或Ajax调用这个自定义Web API,全程不会接触到Graph的访问令牌。

2. 服务器端脚本(Liquid + C#)直接处理

在Power Pages页面中用Liquid模板结合C#代码块,在服务器端完成所有敏感操作:

  • 同样先在Azure AD注册应用,获取租户ID、客户端ID、客户端密钥,并存入Power Pages的环境变量或机密存储(绝对不能硬编码)。
  • 在Web模板或页面中嵌入C#代码块,在服务器端完成令牌获取和Graph API调用:
    {% raw %}
    {% assign tenantId = site.environment_variables["tenant_id"] %}
    {% assign clientId = site.environment_variables["client_id"] %}
    {% assign clientSecret = site.environment_variables["client_secret"] %}
    {% assign tokenEndpoint = "https://login.microsoftonline.com/" | append: tenantId | append: "/oauth2/v2.0/token" %}
    {% assign graphEndpoint = "https://graph.microsoft.com/v1.0/bookingBusinesses" %}
    
    {% capture tokenRequest %}
    grant_type=client_credentials&client_id={{ clientId }}&client_secret={{ clientSecret }}&scope=https://graph.microsoft.com/.default
    {% endcapture %}
    
    {% fetch tokenEndpoint method="POST" body=tokenRequest content_type="application/x-www-form-urlencoded" %}
    {% assign tokenResponse = fetch.response | parse_json %}
    {% assign accessToken = tokenResponse.access_token %}
    
    {% fetch graphEndpoint headers="Authorization: Bearer " | append: accessToken %}
    {% assign graphResponse = fetch.response | parse_json %}
    {% endraw %}
    
  • 把Graph返回的结果通过Liquid渲染到页面,或者让前端从DOM中读取数据,全程前端看不到令牌。

3. Power Automate作为中转层

创建Power Automate云流,暴露为受保护的HTTP触发器:

  • 云流中添加"HTTP"触发器,设置请求方法,同时配置安全策略(比如IP限制、API密钥验证),确保只有Power Pages能调用。
  • 云流内部先通过客户端凭据流获取Graph访问令牌,再调用Booking相关的Graph API,最后把响应返回给前端。
  • Power Pages前端仅需调用这个云流的HTTP端点,所有令牌逻辑都在云流中处理,无暴露风险。

关键注意事项

  • 所有敏感配置(如客户端密钥)必须存在Power Pages的机密存储或环境变量中,禁止硬编码。
  • 应用权限遵循最小权限原则,只授予业务必需的Graph权限。
  • 后端代理或云流要配置严格的访问控制,防止非法请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 22:03:15