你当前正在访问 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 免费帐户
- 一个已关联到你的 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 标头将标识传递给应用的用户登录服务
以下体系结构图体现了实施详情。
- 用户请求访问本地托管应用程序。 Maverics 标识业务流程协调程序将请求代理到应用程序。
- 业务流程协调程序检查用户的身份验证状态。 如果没有会话令牌,或者令牌无效,用户将转到 Azure AD B2C 进行身份验证
- Azure AD B2C 会将身份验证请求发送到配置的社交 IdP。
- 该 IdP 会质询用户,要求提供凭据。 可能需要多重身份验证 (MFA)。
- 该 IdP 会将身份验证响应发送到 Azure AD B2C。 用户可以在 Azure AD B2C 目录中创建本地帐户。
- Azure AD B2C 会将用户请求发送到业务流程协调程序应用在 Azure AD B2C 租户中注册的过程中指定的终结点。
- 业务流程协调程序会评估转发到应用的 HTTP 标头的访问策略和属性值。 业务流程协调程序可能会调用其他属性提供程序来检索信息,以便设置标头值。 业务流程协调程序将请求发送到应用。
- 用户经过了身份验证,具有了该应用的访问权限。
Maverics 标识业务流程协调程序
若要获取软件和文档,请转到 strata.io 联系 Strata 标识。 确定业务流程协调程序先决条件。 安装和配置。
配置 Azure AD B2C 租户
在以下说明中,记录以下内容:
- 租户名称和标识符
- 客户端 ID
- 客户端机密
- 配置的声明
- 重定向 URI
- 在 Azure AD B2C 租户中,在 Azure Active Directory B2C 中注册应用程序。
- 向 Microsoft MS Graph API 授予访问你的应用程序的权限。 使用权限:
offline_access
、openid
。 - 添加与业务流程协调程序 Azure AD B2C 连接器配置的
oauthRedirectURL
参数匹配的重定向 URI,例如https://example.com/oidc-endpoint
。 - 在 Azure Active Directory B2C 中创建用户流和自定义策略。
- 向 Azure Active Directory B2C 租户添加标识提供者。 使用本地帐户、社交帐户或企业帐户登录用户。
- 定义要在注册期间收集的属性。
- 指定要使用业务流程协调程序实例返回到应用程序的属性。
注意
业务流程协调程序使用由 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
获取最新的 Maverics RPM 包。
将该包置于要在其中安装 Maverics 的系统中。 如果要复制到远程主机,请使用 SSH scp。
运行以下命令。 使用文件名替换
maverics.rpm
。sudo rpm -Uvf maverics.rpm
默认情况下,Maverics 位于
/usr/local/bin
目录中。Maverics 在
systemd
下以服务的形式运行。若要验证 Maverics 服务是否正在运行,请运行以下命令:
sudo service maverics status
以下消息(或类似消息)随即显示。
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
最新日志条目将在输出中显示。
- 默认
maverics.yaml
文件在/etc/maverics
目录中创建。 - 将业务流程协调程序配置为保护该应用程序。
- 与 Azure AD B2C 集成并存储。
- 从 Azure Key Vault 中检索机密。
- 定义业务流程协调程序从中读取其配置的位置。
使用环境变量提供配置
使用环境变量配置业务流程协调程序实例。
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 租户中注册的应用。
- 从应用配置中,复制客户端 ID、客户端密码,并重定向 URI 到租户中。
- 输入连接器名称(例如
azureADB2C
)。 - 将连接器
type
设置为azure
。 - 记下连接器名称。 你将在其他配置参数中使用此值。
- 将
authType
设置为oidc
。 - 对于
oauthClientID
参数,设置复制的客户端 ID。 - 对于
oauthClientSecret
参数,设置复制的客户端密码。 - 对于
oauthRedirectURL
参数,设置复制的重定向 URI。 - 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 如何保护你的应用程序以及用户如何访问该应用。
- 输入应用网关名称。
- 设置
location
。 该示例使用应用根/
。 - 在
upstream
中定义受保护的应用程序。 使用 host:port 约定:https://example.com:8080
。 - 设置错误和未授权页面的值。
- 定义应用程序的 HTTP 标头名称和属性值,以建立身份验证和控制。 标头名称通常对应于应用配置。 属性值由连接器设置命名空间。 在此示例中,从 Azure AD B2C 返回的值以连接器名称
azureADB2C
为前缀。 后缀是具有所需值的属性名称,例如given_name
。 - 设置策略。 定义了三个操作:
allowUnauthenticated
、allowAnyAuthenticated
和allowIfAny
。 每个操作都与resource
相关联。 针对该resource
评估策略。
注意
headers
和 policies
使用 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
测试流
- 导航到本地应用程序 URL
https://example.com/sonar/dashboard
。 - 业务流程协调程序重定向到用户流页。
- 从列表中选择 IdP。
- 如果 IdP 需要,请输入凭据,包括 MFA 令牌。
- 你会重定向到 Azure AD B2C,这样就会将应用请求转发到业务流程协调程序重定向 URI。
- 业务流程协调程序评估策略并计算标头。
- 此时将显示请求的应用程序。