如何用Terraform创建Azure B2C身份提供商并自定义登录页?
问题描述
已编写以下Terraform代码创建Azure AD B2C目录资源:
resource "azurerm_aadb2c_directory" "example" { country_code = var.b2c_country_code data_residency_location = var.b2c_data_residency_location display_name = var.b2c_display_name domain_name = "${var.b2c_display_name}.onmicrosoft.com" resource_group_name = var.b2c_rg_name sku_name = var.b2c_sku }
需要创建截图所示的身份提供商,但未找到对应Terraform资源,请求协助定位正确资源,并说明如何创建、自定义相关页面。
对应Terraform资源:身份提供商
Azure AD B2C的身份提供商对应Terraform资源为azurerm_aadb2c_identity_provider,支持主流身份源(如Microsoft Account、Google、Facebook、Twitter等)。
示例代码(以Microsoft Account为例)
resource "azurerm_aadb2c_identity_provider" "microsoft" { name = "MicrosoftAccount" resource_group_name = var.b2c_rg_name tenant_id = azurerm_aadb2c_directory.example.tenant_id microsoft_account { client_id = var.microsoft_client_id client_secret = var.microsoft_client_secret } }
参数说明
name:身份提供商的标识名称(固定值,如MicrosoftAccount、Google、Facebook等)tenant_id:关联的AD B2C目录租户ID,可从已创建的azurerm_aadb2c_directory资源中引用- 对应身份源的嵌套块:如
google、facebook等,需填入对应平台的client_id和client_secret
创建与自定义登录/注册页面
要自定义AD B2C的登录/注册页面,需结合azurerm_aadb2c_user_flow和azurerm_aadb2c_user_flow_language_customization资源,步骤如下:
- 创建用户流
定义基础的用户流(如注册登录流),并启用自定义UI:
resource "azurerm_aadb2c_user_flow" "sign_up_sign_in" { name = "B2C_1_signupsignin" resource_group_name = var.b2c_rg_name tenant_id = azurerm_aadb2c_directory.example.tenant_id user_flow_type = "signUpOrSignIn" identity_providers = [ azurerm_aadb2c_identity_provider.microsoft.name ] custom_ui_enabled = true }
- 关联自定义页面
- 将自定义HTML页面上传至Azure存储账户(需配置CORS允许B2C域名访问)
- 通过
azurerm_aadb2c_user_flow_language_customization关联自定义页面:
resource "azurerm_aadb2c_user_flow_language_customization" "sign_up_sign_in" { user_flow_id = azurerm_aadb2c_user_flow.sign_up_sign_in.id language_name = "en" enabled = true page_customizations { page_name = "unifiedssp" uri = "https://your-storage-account.blob.core.windows.net/custom-ui/unified-ssp.html" } }
- 页面自定义要点
- 使用AD B2C官方模板HTML作为基础,替换样式、文本内容
- 保留页面中的B2C功能占位符(如
{OIDC:LoginUrl}、{LocalizedStrings:ForgotPasswordLink})以保证流程正常运行 - 存储账户需设置公共访问权限或使用SAS令牌授权B2C访问页面资源
内容的提问来源于stack exchange,提问作者Jananath Banuka
相关产品推荐
相关产品推荐

