閱讀英文

共用方式為

使用 GitHub Actions 部署自定义策略

重要

自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息

GitHub Actions 允许直接在 GitHub 存储库中创建自定义持续集成(CI)和持续部署(CD)工作流。 本文介绍如何使用 GitHub Actions 自动部署 Azure Active Directory B2C (Azure AD B2C) 自定义策略

若要自动化自定义策略部署过程,请使用 用于部署 Azure AD B2C 自定义策略的 GitHub 操作。 此 GitHub Action 由 Azure AD B2C 社区开发。

此操作使用 Microsoft Graph API 将 Azure AD B2C 自定义策略部署到您的 Azure AD B2C 租户中。 如果租户中尚不存在该策略,将创建该策略。 否则,将替换它。

重要

借助 Azure Pipelines 管理 Azure AD B2C 自定义策略目前使用 Microsoft Graph API 终结点上提供的预览/beta操作。 不支持在生产应用程序中使用这些 API。 有关详细信息,请参阅 Microsoft Graph REST API beta 端点参考

先决条件

选择自定义策略文件夹

GitHub 存储库可以包含所有 Azure AD B2C 策略文件和其他资产。 在存储库的根目录中,创建或选择包含自定义策略的现有文件夹。

例如,选择名为 策略的文件夹。 将 Azure AD B2C 自定义策略文件添加到 策略 文件夹。 然后提交更改。

请勿推送更改。 设置部署工作流后,稍后将执行此作。

注册 Microsoft Graph 应用程序

若要允许 GitHub Action 与 Microsoft 图形 API 进行交互,请在 Azure AD B2C 租户中创建应用程序注册。 如果尚未注册,请 注册 Microsoft Graph 应用程序

若要使 GitHub Action 访问 Microsoft Graph 中的数据,请向已注册的应用程序授予相关 应用程序权限。 在应用注册的 API 权限中授予 >>Policy.ReadWrite.TrustFramework 权限。

创建 GitHub 加密机密

GitHub 机密是在组织、存储库或存储库环境中创建的加密环境变量。 在此步骤中,你将存储前面在 “注册 MS Graph 应用程序 ”步骤中注册的应用程序的应用程序机密。

用于部署 Azure AD B2C 自定义策略的 GitHub Action 使用机密来获取访问令牌,该令牌用于与 Microsoft Graph API 交互。 有关详细信息,请参阅 为存储库创建加密机密

若要创建 GitHub 机密,请执行以下步骤:

  1. 在 GitHub 中,导航到存储库的主页。
  2. 在存储库名称下,选择“设置”。
  3. 在左侧边栏中,选择“ 机密”。
  4. 选择“新建存储库机密”。
  5. 对于 “名称”,请键入 ClientSecret
  6. 对于 “值”,请输入之前创建的应用程序机密。
  7. 选择“添加机密”。

创建 GitHub 工作流

GitHub 工作流是你添加到存储库中的自动化流程。 工作流由一个或多个作业组成,可由事件计划或触发。 在此步骤中,将创建用于部署自定义策略的工作流。

若要创建工作流,请执行以下步骤:

  1. 在 GitHub 中,导航到存储库的主页。

  2. 在您的存储库名称下,选择“操作”

    “GitHub操作”选项卡的屏幕截图

  3. 如果以前未配置工作流,请选择 自己设置工作流。 否则,请选择“ 新建工作流”。

    显示如何创建新工作流的屏幕截图

  4. GitHub 提议在 main.yml 文件夹中创建一个名为 .github/workflows 的工作流文件。 此文件包含有关工作流的信息,包括 Azure AD B2C 环境和要部署的自定义策略。 在 GitHub Web 编辑器中,添加以下 YAML 代码:

    on: push
    
    env:
      clientId: 00001111-aaaa-2222-bbbb-3333cccc4444
      tenant: your-tenant.partner.onmschina.cn
    
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v2
    
        - name: 'Upload TrustFrameworkBase Policy'
          uses: azure-ad-b2c/deploy-trustframework-policy@v3
          with:
            folder: "./Policies"
            files: "TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml"
            tenant: ${{ env.tenant }}
            clientId: ${{ env.clientId }}
            clientSecret: ${{ secrets.clientSecret }}
    
  5. 更新 YAML 文件的以下属性:

    部分 名称 价值
    env clientId 注册 MS Graph 应用程序步骤中注册的应用程序(客户端)ID
    env tenant Azure AD B2C 租户名称(例如,contoso.partner.onmschina.cn)。
    with folder 存储自定义策略文件的文件夹,例如 ./Policies
    with files 要部署的策略文件列表(以逗号分隔),例如 TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml

    重要

    运行代理并上传策略文件时,请确保按正确的顺序上传它们:

    1. TrustFrameworkBase.xml
    2. TrustFrameworkLocalization.xml
    3. TrustFrameworkExtensions.xml
    4. SignUpOrSignin.xml
    5. ProfileEdit.xml
    6. PasswordReset.xml
  6. 选择“开始提交”。

  7. 在提交消息字段下方,指示是将提交添加到当前分支还是将提交添加到新分支。 选择 “提交新文件”或 “建议新文件 ”以创建拉取请求。

测试工作流

若要测试您创建的工作流,请推送您的自定义策略的更改。 作业开始运行后,可以看到运行进度的可视化图,并在 GitHub 上查看每个步骤的活动。

  1. 在 GitHub 上,导航到存储库的主页。

  2. 在您的存储库名称下,选择“操作”

  3. 在左侧边栏中,选择创建的工作流。

  4. “工作流运行”下,选择要查看的运行的名称。

    显示如何选择工作流活动的屏幕截图

  5. “作业 ”或“可视化效果图”下,选择要查看的作业。

  6. 查看每个步骤的结果。 以下屏幕截图演示上传自定义策略步骤日志。

    上传自定义策略步骤日志

可选:计划工作流

创建的工作流由 推送 事件触发。 如果需要,可以选择另一个事件来触发工作流,例如 拉取请求

还可以使用 POSIX cron 语法计划在特定 UTC 时间运行的工作流。 计划事件允许你在计划的时间触发工作流。 有关详细信息,请参阅计划事件

以下示例每天在 5:30 和 17:30 UTC 触发工作流:

on:
  schedule:
    # * is a special character in YAML so you have to quote this string
    - cron:  '30 5,17 * * *'

编辑您的工作流程:

  1. 在 GitHub 中,导航到存储库的主页。

  2. 在您的存储库名称下,选择“操作”

  3. 在左侧边栏中,选择创建的工作流。

  4. “工作流运行”下,选择要查看的运行的名称。

  5. 从菜单中选择三个点 ...,然后选择“ 查看工作流文件”。

    显示如何查看工作流文件的屏幕截图

  6. 在 GitHub Web 编辑器中,选择“ 编辑”。

  7. on: push 更改为上面的示例。

  8. 提交您的 修改。

后续步骤