通过 GitHub Actions,可以直接在 GitHub 存储库中创建自定义持续集成 (CI) 和持续部署 (CD) 工作流。 本文介绍如何使用 GitHub Actions 自动部署 Azure Active Directory B2C (Azure AD B2C) 自定义策略。
若要自动执行自定义策略部署过程,请使用 GitHub Action 来部署 Azure AD B2C 自定义策略。 此 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 版本终结点参考。
先决条件
- 完成 Active Directory B2C 中的自定义策略入门中的步骤。
- 如果尚未创建 GitHub 存储库,请创建一个。
选择自定义策略文件夹
GitHub 存储库可以包含所有 Azure AD B2C 策略文件和其他资产。 在存储库的根目录中,创建或选择包含自定义策略的现有文件夹。
例如,选择名为“策略”的文件夹。 将 Azure AD B2C 自定义策略文件添加到“策略”文件夹。 然后提交更改。
请不要推送更改。 你将在稍后设置部署工作流后执行此操作。
注册 Microsoft Graph 应用程序
若要允许 GitHub Action 与 Microsoft Graph API 交互,请在 Azure AD B2C 租户中创建应用程序注册。 如果你尚未进行这一步,请注册 Microsoft Graph 应用程序。
若要让 GitHub Action 访问 Microsoft Graph 中的数据,请向已注册的应用程序授予相关应用程序权限。 在应用注册的“API 权限”中授予了“Microsoft Graph”>“策略”>“Policy.ReadWrite.TrustFramework”权限 。
创建 GitHub 加密机密
GitHub 机密是在组织、存储库或存储库环境中创建的加密环境变量。 在此步骤中,将存储之前在注册 MS Graph 应用程序步骤中注册的应用程序的应用程序机密。
用于部署 Azure AD B2C 自定义策略的 GitHub Action 使用机密来获取用于与 Microsoft Graph API 交互的访问令牌。 有关详细信息,请参阅为存储库创建加密机密。
若要创建 GitHub 机密,请按这些步骤操作:
- 在 GitHub 中,导航到存储库的主页。
- 在存储库名称下,选择“设置”。
- 在左侧边栏中,选择“机密”。
- 选择“新建存储库机密”。
- 对于“名称”,键入“ClientSecret” 。
- 对于“值”,输入之前创建的应用程序机密。
- 选择“添加机密”。
创建 GitHub 工作流
GitHub 工作流是你添加到存储库的自动化过程。 工作流由一个或多个作业组成,可以由事件计划或触发。 在此步骤中,你将创建部署自定义策略的工作流。
若要创建工作流,请执行以下步骤:
在 GitHub 中,导航到存储库的主页。
在存储库名称下,选择“Actions”。
如果之前没有配置工作流,请选择“自行设置工作流”。 否则,请选择“新建工作流”。
GitHub 提出在
.github/workflows
文件夹中创建一个名为main.yml
的工作流文件。 此文件包含有关工作流的信息,包括 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 }}
更新 YAML 文件的以下属性:
部分 名称 值 env
clientId
你在注册 MS Graph 应用程序步骤中注册的应用程序的“应用程序(客户端)ID”。 env
tenant
你的 Azure AD B2C 租户名称(例如,contoso.onmicrosoft.com)。 with
folder
存储自定义策略文件的文件夹,例如 ./Policies
。with
files
要部署的以逗号分隔的策略文件列表,例如 TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml
。重要
运行代理并上传策略文件时,请确保按正确顺序上传它们:
- TrustFrameworkBase.xml
- TrustFrameworkLocalization.xml
- TrustFrameworkExtensions.xml
- SignUpOrSignin.xml
- ProfileEdit.xml
- PasswordReset.xml
选择“开始提交”。
在“提交消息”字段下方,指示是将提交添加到当前分支还是新分支。 选择“提交新文件”或“建议新文件”以创建拉取请求 。
测试工作流
若要测试创建的工作流,请推送自定义策略的更改。 作业开始运行后,你可以在 GitHub 上查看运行进度的可视化图以及每个步骤的活动。
在 GitHub 中,导航到存储库的主页。
在存储库名称下,选择“Actions”。
在左侧边栏中,选择已创建的工作流。
在“工作流运行”下,选择要查看的运行的名称。
在“作业”下或在可视化图中,选择要查看的作业。
查看每一步的结果。 以下屏幕截图演示了“上传自定义策略”步骤日志。
可选:计划工作流
创建的工作流由推送事件触发。 如果你愿意,可以选择另一个事件来触发工作流,例如拉取请求。
还可以使用 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 * * *'
若要编辑工作流,请执行以下操作:
在 GitHub 中,导航到存储库的主页。
在存储库名称下,选择“Actions”。
在左侧边栏中,选择已创建的工作流。
在“工作流运行”下,选择要查看的运行的名称。
从菜单中选择三个点“...”,然后选择“查看工作流文件” 。
在 GitHub Web 编辑器中,选择“编辑”。
将
on: push
更改为上面的示例。提交更改。
后续步骤
- 了解如何配置触发工作流的事件