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

如何在AAD中为Azure静态Web应用预览环境动态配置重定向URL?

自动化Azure AD应用重定向URI适配Static Web Apps预览环境

解决方案概述

通过扩展GitHub Actions工作流,在拉取请求(PR)创建时自动将预览环境的AAD回调URI添加到Azure AD应用配置中,在PR合并/关闭时自动移除该URI,无需手动操作。

步骤1:配置GitHub仓库密钥

在GitHub仓库的Settings > Secrets and variables > Actions中添加以下密钥:

  • AZURE_CREDENTIALS:拥有Azure AD应用修改权限的服务主体凭据(可通过az ad sp create-for-rbac生成)
  • AD_APP_ID:你的Azure AD应用的客户端ID

步骤2:扩展现有GitHub Workflow

在你现有的Static Web Apps部署Workflow文件(通常是.github/workflows/azure-static-web-apps-*.yml)中,添加以下逻辑:

2.1 触发条件保持不变

确保Workflow仍监听PR事件:

on:
  pull_request:
    types: [opened, synchronize, closed]
    branches:
      - main

2.2 添加处理重定向URI的任务

在部署任务后,新增任务处理AAD应用的重定向URI:

jobs:
  build_and_deploy_job:
    if: github.event.action == 'opened' || github.event.action == 'synchronize'
    runs-on: ubuntu-latest
    name: Build and Deploy Job
    steps:
      # 原有的代码检出、项目构建步骤...
      - name: Deploy to Azure Static Web Apps
        id: deploy
        uses: Azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          action: "upload"
          app_location: "/" # 根据你的项目目录结构调整
          api_location: "" # 无后端API可留空
          output_location: "dist" # 项目构建产物目录,按需修改

      # 新增:将预览环境的AAD回调URI添加到Azure AD应用
      - name: Login to Azure
        uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}
      
      - name: Update AD app redirect URIs
        run: |
          CALLBACK_URI="${{ steps.deploy.outputs.static_web_app_url }}/.auth/login/aad/callback"
          az ad app update --id ${{ secrets.AD_APP_ID }} --add replyUrls "$CALLBACK_URI"

  close_job:
    if: github.event.action == 'closed'
    runs-on: ubuntu-latest
    name: Cleanup Preview Environment Redirect URI
    steps:
      - name: Generate preview URL from PR ID
        # 按你的预览环境URL格式生成对应地址
        run: |
          PREVIEW_URL="https://your-prefix-${{ github.event.number }}.westeurope.4.azurestaticapps.net"
          echo "PREVIEW_URL=$PREVIEW_URL" >> $GITHUB_ENV

      - name: Login to Azure
        uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}
      
      - name: Remove AAD redirect URI
        run: |
          CALLBACK_URI="${{ env.PREVIEW_URL }}/.auth/login/aad/callback"
          az ad app update --id ${{ secrets.AD_APP_ID }} --remove replyUrls "$CALLBACK_URI"

关键注意事项

  • 服务主体权限:用于登录Azure的服务主体必须拥有Application Administrator角色,或被授予修改目标AD应用的Application.ReadWrite.OwnedBy权限。
  • 预览URL提取:如果PR关闭时无法通过部署步骤输出获取预览URL,可根据PR ID按固定格式生成,或从PR的部署通知评论中提取。
  • 重复处理:PR重新打开时重复添加同一URI不会触发Azure AD应用报错,系统会自动忽略重复项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:43:16