你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Strata 配置 Azure Active Directory B2C 的教程

重要

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

在本教程中,了解如何将 Azure Active Directory B2C (Azure AD B2C) 与 Strata Maverics Identity Orchestrator 集成,这有助于保护本地应用程序。 它连接到身份系统,迁移用户和凭证,同步策略和配置,并抽象化身份验证和会话管理。 使用 Strata 从旧版过渡到 Azure AD B2C,而无需重写应用程序。

该解决方案具有以下优点:

  • 客户单一登录 (SSO) 到本地混合应用 - Azure AD B2C 支持使用 Maverics Identity Orchestrator 进行客户 SSO
    • 用户使用托管在 Azure AD B2C 或身份提供商 IdP 中的帐户登录
    • Maverics 为曾经由 Symantec SiteMinder 等传统身份系统保护的应用程序提供 SSO 功能。
  • 将标准 SSO 扩展到应用程序 - 使用 Azure AD B2C 管理用户访问,并通过 Maverics Identity Orchestrator 安全断言标记语言 (SAML) 或 OpenID Connect (OIDC) 连接器启用 SSO
  • 轻松配置 - 将 Maverics Identity Orchestrator SAML 或 OIDC 连接器连接到 Azure AD B2C

先决条件

若要开始,需要:

  • 一个已关联到你的 Azure 订阅的 Azure AD B2C 租户
  • 一个 Azure Key Vault 实例,用于存储 Maverics Identity Orchestrator 使用的机密。 连接到 Azure AD B2C 或其他属性提供程序,例如轻型目录访问协议 (LDAP) 目录或数据库。
  • 在 Azure 虚拟机 (VM) 或本地服务器中运行的 Maverics Identity Orchestrator 实例。 要获取软件和文档,请转到 strata.io 联系 Strata Identity
  • 用于转换为 Azure AD B2C 的本地应用程序

方案说明

Maverics Identity Orchestrator 集成包括以下组件:

  • Azure AD B2C - 验证用户凭据的授权服务器
    • 经过身份验证的用户使用 Azure AD B2C 目录中的本地帐户访问本地应用
  • 外部社交或企业身份提供商 (IdP):OIDC 提供商、Facebook、Google 或 GitHub
  • Strata Maverics Identity Orchestrator:通过 HTTP 标头将身份传递给应用程序的用户登录服务

以下体系结构关系图显示了实现。

Azure AD B2C 集成体系结构的示意图,其中包含 Maverics Identity Orchestrator,用于访问混合应用。

  1. 用户请求访问本地托管应用程序。 Maverics Identity Orchestrator 将请求代理到应用程序。
  2. Orchestrator 检查用户身份验证状态。 如果没有会话令牌或令牌无效,则用户将转到 Azure AD B2C 进行身份验证
  3. Azure AD B2C 将身份验证请求发送到配置的社交 IdP。
  4. IdP 要求用户提供凭据。 可能需要多重身份验证 (MFA)。
  5. IdP 将身份验证响应发送到 Azure AD B2C。 用户可以在 Azure AD B2C 目录中创建本地帐户。
  6. Azure AD B2C 将用户请求发送到在 Azure AD B2C 租户中注册 Orchestrator 应用程序期间指定的终端节点。
  7. Orchestrator 评估转发到应用程序的 HTTP 标头的访问策略和属性值。 Orchestrator 可能会调用其他属性提供程序来检索信息以设置标头值。 Orchestrator 将请求发送到应用程序。
  8. 用户已经过身份验证并有权访问应用程序。

Maverics 标识业务流程协调程序

要获取软件和文档,请转到 strata.io 联系 Strata Identity。 确定业务流程协调程序先决条件。 安装和配置。

配置 Azure AD B2C 租户

在以下说明中,记录以下内容:

  • 租户名称和标识符
  • 客户 ID
  • 客户密钥
  • 配置的声明
  • 重定向 URI
  1. 在 Azure AD B2C 租户中,在 Azure Active Directory B2C 中注册应用程序
  2. 向应用程序授予 Microsoft MS Graph API 权限。 使用权限: offline_accessopenid
  3. 添加与 oauthRedirectURL Orchestrator Azure AD B2C 连接器配置的参数匹配的重定向 URI,例如 https://example.com/oidc-endpoint.
  4. 在 Azure Active Directory B2C 中创建用户流和自定义策略
  5. 向 Azure Active Directory B2C 租户添加标识提供者。 使用本地帐户、社交帐户或企业登录您的用户。
  6. 定义注册期间要收集的属性。
  7. 指定要使用业务流程协调程序实例返回到应用程序的属性。

注释

Orchestrator 使用 Azure AD B2C 返回的声明中的属性,并且可以从连接的标识系统(如 LDAP 目录和数据库)中检索属性。 这些属性位于 HTTP 标头中,并发送到上游本地应用程序。

配置 Maverics 标识业务流程协调程序

使用以下部分中的说明配置 Orchestrator 实例。

Maverics Identity Orchestrator 服务器要求

您可以在任何服务器上运行 Orchestrator 实例,无论是在本地还是在 Azure、AWS 或 GCP 等提供商的公有云基础设施中。

  • 作系统:RHEL 7.7 或更高版本
  • 磁盘:10 GB(小)
  • 内存: 16 GB
  • 端口:22 (SSH/SCP)、443、80
  • root 访问权限:用于安装/管理任务
  • Maverics 标识业务流程协调程序:以 下用户 maverics 的身份运行systemd
  • 网络出口:来自托管可访问 Microsoft Entra 租户的 Maverics 标识业务流程协调程序的服务器

安装 Maverics Identity Orchestrator

  1. 获取最新的 Maverics RPM 包。

  2. 将软件包放在要安装 Maverics 的系统上。 如果要复制到远程主机,请使用 SSH scp

  3. 运行以下命令。 使用您的文件名替换 maverics.rpm.

    sudo rpm -Uvf maverics.rpm

    默认情况下,Maverics 位于 /usr/local/bin 目录中。

  4. 作为一个服务,Maverics 在systemd下运行。

  5. 要验证 Maverics 服务是否正在运行,请运行以下命令:

    sudo service maverics status

  6. 将显示以下消息(或类似消息)。

Redirecting to /bin/systemctl status maverics.service
  maverics.service - Maverics
  Loaded: loaded (/etc/systemd/system/maverics.service; enabled; vendor preset: disabled)
  Active: active (running) since Thu 2020-08-13 16:48:01 UTC; 24h ago
  Main PID: 330772 (maverics)
  Tasks: 5 (limit: 11389)
  Memory: 14.0M
  CGroup: /system.slice/maverics.service
          └─330772 /usr/local/bin/maverics --config /etc/maverics/maverics.yaml

注释

如果 Maverics 启动失败,请执行以下命令:

journalctl --unit=maverics.service --reverse

最新的日志条目将显示在输出中。

  1. 默认 maverics.yaml 文件创建在 /etc/maverics 目录中。
  2. 配置 Orchestrator 以保护应用程序。
  3. 与 Azure AD B2C 集成并存储。
  4. Azure Key Vault 检索机密。
  5. 定义业务流程协调程序从中读取其配置的位置。

使用环境变量的供应配置

使用环境变量配置 Orchestrator 实例。

MAVERICS_CONFIG

此环境变量通知 Orchestrator 实例要使用哪些 YAML 配置文件,以及在启动或重新启动期间在哪里可以找到这些文件。 在/etc/maverics/maverics.env中设置环境变量。

创建 Orchestrator TLS 配置

中的tlsmaverics.yaml字段声明 Orchestrator 实例使用的传输层安全配置。 连接器使用 TLS 对象和 Orchestrator 服务器。

maverics 密钥是为 Orchestrator 服务器保留的。 使用其他键将 TLS 对象注入连接器。

tls:
  maverics:
    certFile: /etc/maverics/maverics.cert
    keyFile: /etc/maverics/maverics.key

配置 Azure AD B2C 连接器

业务流程协调程序使用连接器与身份验证和属性提供程序集成。 Orchestrator 应用程序网关使用 Azure AD B2C 连接器作为身份验证和属性提供程序。 Azure AD B2C 使用社交 IdP 进行身份验证,然后向 Orchestrator 提供属性,并在 HTTP 标头中设置的声明中传递这些属性。

连接器配置对应于在 Azure AD B2C 租户中注册的应用程序。

  1. 从应用程序配置中,将 客户端 ID、客户端密钥和重定向 URI 复制到租户中。
  2. 输入连接器名称(例如 azureADB2C)。
  3. 将连接器 type 设置为 azure
  4. 记下连接器名称。 您将在其他配置参数中使用此值。
  5. authType 设置为 oidc
  6. 对于参数 oauthClientID ,请设置您复制的 Client ID。
  7. 对于oauthClientSecret参数,请设置您复制的客户端密钥。
  8. 对于参数 oauthRedirectURL ,请设置您复制的重定向 URI。
  9. Azure AD B2C OIDC 连接器使用 OIDC 终结点来发现元数据,包括 URL 和签名密钥。 对于租户终端节点,请使用 oidcWellKnownURL.
connectors:
  name: azureADB2C
  type: azure
  oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
  oauthRedirectURL: https://example.com/oidc-endpoint
  oauthClientID: <azureADB2CClientID>
  oauthClientSecret: <azureADB2CClientSecret>
  authType: oidc

将 Azure AD B2C 定义为身份验证提供程序

身份验证提供程序为在应用程序资源请求期间未提供有效会话的用户确定身份验证。 Azure AD B2C 租户配置决定如何向用户提出凭据质询,同时应用其他身份验证策略。 例如,需要第二个因素来完成身份验证,并决定在身份验证后返回给 Orchestrator App Gateway 的内容。

authProvider 的值必须与你的 Connector name 值匹配。

authProvider: azureADB2C

使用 Orchestrator 应用程序网关保护本地应用程序

Orchestrator 应用程序网关配置声明 Azure AD B2C 如何保护您的应用程序以及用户如何访问应用程序。

  1. 输入应用程序网关名称。
  2. 设置 location。 该示例使用 app root /
  3. upstream中定义受保护的应用程序。 使用 host:port 约定:https://example.com:8080
  4. 设置错误和未授权页面的值。
  5. 定义应用程序的 HTTP 标头名称和属性值,以建立身份验证和控制。 标头名称通常与应用程序配置相对应。 属性值由 Connector 命名。 在示例中,从 Azure AD B2C 返回的值以连接器名称 azureADB2C为前缀。 后缀是具有所需值的属性名称,例如 given_name.
  6. 设置策略。 定义了三个动作:allowUnauthenticatedallowAnyAuthenticatedallowIfAny。 每个动作都与 resource 相关。 针对该 resource 评估策略。

注释

headerspolicies 使用 JavaScript 或 GoLang 服务扩展来实现任意逻辑。

appgateways:
  - name: Sonar
    location: /
    upstream: https://example.com:8080
    errorPage: https://example.com:8080/sonar/error
    unauthorizedPage: https://example.com:8080/sonar/accessdenied

    headers:
      SM_USER: azureADB2C.sub
      firstname: azureADB2C.given_name
      lastname: azureADB2C.family_name

    policies:
      - resource: ~ \.(jpg|png|ico|svg)
        allowUnauthenticated: true
      - resource: /
        allowAnyAuthenticated: true
      - resource: /sonar/daily_deals
        allowIfAny:
          azureADB2C.customAttribute: Rewards Member

Azure Key Vault 作为机密提供程序

保护业务流程协调程序用于连接到 Azure AD B2C 和其他标识系统的机密。 Maverics 以纯文本格式从 maverics.yaml 中加载机密,但在本教程中,请使用 Azure Key Vault 作为机密提供程序。

请遵循快速入门:使用 Azure 门户在 Azure Key Vault 中设置和检索机密中的说明。 将机密添加到保管库,并记下每个机密的 SECRET NAME。 例如,AzureADB2CClientSecret

要在 maverics.yaml 配置文件中将一个值声明为 secret,应使用尖括号将该 secret 括起来。

connectors:
  - name: AzureADB2C
    type: azure
    oauthClientID: <AzureADB2CClientID>
    oauthClientSecret: <AzureADB2CClientSecret>

尖括号中的值必须对应于为 Azure Key Vault 中机密提供的 SECRET NAME

若要从 Azure Key Vault 加载机密,请利用在 azure-credentials.json 文件中找到的凭据来设置 MAVERICS_SECRET_PROVIDER 文件中的环境变量 /etc/maverics/maverics.env。 使用以下模式:

MAVERICS_SECRET_PROVIDER='azurekeyvault://<KEYVAULT NAME>.vault.azure.net?clientID=<APPID>&clientSecret=<PASSWORD>&tenantID=<TENANT>'

完成配置

以下信息说明了 Orchestrator 配置的显示方式。

version: 0.4.2
listenAddress: ":443"
tls:
  maverics:
    certFile: certs/maverics.crt
    keyFile: certs/maverics.key

authProvider: azureADB2C

connectors:
  - name: azureADB2C
    type: azure
    oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
    oauthRedirectURL: https://example.com/oidc-endpoint
    oauthClientID: <azureADB2CClientID>
    oauthClientSecret: <azureADB2CClientSecret>
    authType: oidc

appgateways:
  - name: Sonar
    location: /
    upstream: http://example.com:8080
    errorPage: http://example.com:8080/sonar/accessdenied
    unauthorizedPage: http://example.com:8080/sonar/accessdenied

    headers:
      SM_USER: azureADB2C.sub
      firstname: azureADB2C.given_name
      lastname: azureADB2C.family_name

    policies:
      - resource: ~ \.(jpg|png|ico|svg)
        allowUnauthenticated: true
      - resource: /
        allowAnyAuthenticated: true
      - resource: /sonar/daily_deals
        allowIfAny:
          azureADB2C.customAttribute: Rewards Member

测试流

  1. 访问本地部署的应用程序 URL https://example.com/sonar/dashboard
  2. 业务流程协调程序重定向到用户流页。
  3. 从列表中选择 IdP。
  4. 如果 IdP 需要,请输入凭据,包括 MFA 令牌。
  5. 您将重定向到 Azure AD B2C,它将应用程序请求转发到 Orchestrator 重定向 URI。
  6. 业务流程协调程序评估策略并计算标头。
  7. 此时将显示请求的应用程序。

后续步骤