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

为 Azure Active Directory B2C 配置 Strata 的教程

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

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

  • 客户单一登录 (SSO) 到本地混合应用:Azure AD B2C 支持 Maverics 标识业务流程协调程序的客户 SSO
    • 用户使用 Azure AD B2C 或标识提供者 (IdP) 中托管的帐户登录
    • Maverics 会证明由旧标识系统(如 Symantec SiteMinder)保护的应用的 SSO
  • 将标准 SSO 扩展到应用 - 使用 Azure AD B2C 管理用户访问,并通过 Maverics 标识业务流程协调程序安全断言标记语言 (SAML) 或 penID Connect (OIDC) 连接器启用 SSO
  • 轻松配置 - 将 Maverics 标识业务流程协调程序 SAML 或 OIDC 连接器连接到 Azure AD B2C

先决条件

若要开始,需要:

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

方案描述

Maverics 标识业务流程协调程序集成包括以下组件:

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

以下体系结构图体现了实施详情。

该图显示了 Azure AD B2C 集成体系结构,其中使用了 Maverics 标识业务流程协调程序,用于访问混合应用。

  1. 用户请求访问本地托管应用程序。 Maverics 标识业务流程协调程序将请求代理到应用程序。
  2. 业务流程协调程序检查用户的身份验证状态。 如果没有会话令牌,或者令牌无效,用户将转到 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 租户中注册的过程中指定的终结点。
  7. 业务流程协调程序会评估转发到应用的 HTTP 标头的访问策略和属性值。 业务流程协调程序可能会调用其他属性提供程序来检索信息,以便设置标头值。 业务流程协调程序将请求发送到应用。
  8. 用户经过了身份验证,具有了该应用的访问权限。

Maverics 标识业务流程协调程序

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

配置 Azure AD B2C 租户

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

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

注意

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

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

按照以下部分中的说明配置业务流程协调程序实例。

Maverics 标识业务流程协调程序服务器要求

你可以在任何服务器上运行业务流程协调程序实例,无论是在本地还是在 Azure、AWS 或 GCP 等提供商的公共云基础结构中。

  • 操作系统:REHL 7.7 或更高版本,CentOS 7+
  • 磁盘:10 GB(小)
  • 内存:16 GB
  • 端口:22 (SSH/SCP)、443、80
  • 根访问权限:适用于安装/管理任务
  • Maverics 标识业务流程协调程序:以 systemd 下用户 maverics 的身份运行
  • 网络出口:来自托管可访问 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. 将业务流程协调程序配置为保护该应用程序。
  3. 与 Azure AD B2C 集成并存储。
  4. Azure Key Vault 中检索机密。
  5. 定义业务流程协调程序从中读取其配置的位置。

使用环境变量提供配置

使用环境变量配置业务流程协调程序实例。

MAVERICS_CONFIG

此环境变量通知业务流程协调程序实例在启动或重启过程中要使用哪些 YAML 配置文件以及在哪里找到这些文件。 在 /etc/maverics/maverics.env 中设置该环境变量。

创建业务流程协调程序 TLS 配置

maverics.yaml 中的 tls 字段声明业务流程协调程序实例将要使用的传输层安全性配置。 连接器使用 TLS 对象和业务流程协调程序服务器。

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

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

配置 Azure AD B2C 连接器

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

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

  1. 从应用配置中,复制客户端 ID、客户端密码,并重定向 URI 到租户中。
  2. 输入连接器名称(例如 azureADB2C)。
  3. 将连接器 type 设置为 azure
  4. 记下连接器名称。 你将在其他配置参数中使用此值。
  5. authType 设置为 oidc
  6. 对于 oauthClientID 参数,设置复制的客户端 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 租户配置决定如何向用户提出凭据质询,同时应用其他身份验证策略。 例如,若需要另一个因素来完成身份验证,并决定在身份验证后返回到业务流程协调程序应用程序网关的内容。

authProvider 的值必须与连接器的 name 值匹配。

authProvider: azureADB2C

使用业务流程协调程序应用程序网关保护本地应用

业务流程协调程序的应用程序网关配置声明 Azure AD B2C 如何保护你的应用程序以及用户如何访问该应用。

  1. 输入应用网关名称。
  2. 设置 location。 该示例使用应用根 /
  3. upstream 中定义受保护的应用程序。 使用 host:port 约定:https://example.com:8080
  4. 设置错误和未授权页面的值。
  5. 定义应用程序的 HTTP 标头名称和属性值,以建立身份验证和控制。 标头名称通常对应于应用配置。 属性值由连接器设置命名空间。 在此示例中,从 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 配置文件中将值声明为机密,请用尖括号将机密括起来:

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

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

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

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

完成配置

以下信息演示业务流程协调程序配置的显示方式。

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,这样就会将应用请求转发到业务流程协调程序重定向 URI。
  6. 业务流程协调程序评估策略并计算标头。
  7. 此时将显示请求的应用程序。

后续步骤