Tutorial para configurar o Azure Active Directory B2C com a Strata
Neste tutorial, saiba como integrar o Azure AD B2C (Azure Active Directory B2C) ao Strata Maverics Identity Orchestrator, que ajuda a proteger aplicativos locais. Ele se conecta a sistemas de identidade, migra usuários e credenciais, sincroniza políticas e configurações e abstrai o gerenciamento de autenticação e de sessão. Use o Strata para fazer a transição do sistema herdado para o Azure AD B2C sem reescrever aplicativos.
A solução oferece as seguintes vantagens:
-
SSO (logon único) do cliente para aplicativos híbridos locais – o Azure AD B2C dá suporte ao SSO do cliente com o Maverics Identity Orchestrator
- Os usuários entram usando contas hospedadas no Azure AD B2C ou no IdP (provedor de identidade)
- O Maverics comprova o SSO para aplicativos protegidos historicamente por sistemas de identidade herdados, como o Symantec SiteMinder
- Estender o SSO padrão para aplicativos – use o Azure AD B2C para gerenciar o acesso do usuário e habilitar o SSO com conectores SAML (Security Assertion Markup Language) ou OIDC (OpenID Connect) do Maverics Identity Orchestrator
- Configuração fácil – conecte conectores SAML ou OIDC do Maverics Identity Orchestrator ao Azure AD B2C
Pré-requisitos
Para começar, você precisará de:
Uma assinatura do Azure
- Se não tiver, você pode obter uma conta gratuita do Azure
- Um locatário do Azure AD B2C vinculado à sua assinatura do Azure
- Uma instância do Azure Key Vault para armazenar segredos usados pelo Maverics Identity Orchestrator. Conecte ao Azure AD B2C ou a outros provedores de atributos, como um diretório ou banco de dados do protocolo LDAP (Lightweight Directory Access Protocol).
- Uma instância do Maverics Identity Orchestrator em execução em uma VM (máquina virtual) do Azure ou em um servidor local. Para obter o software e a documentação, acesse strata.io Contact Strata Identity.
- Um aplicativo local para fazer a transição para o Azure AD B2C
Descrição do cenário
A integração do Maverics Identity Orchestrator inclui os seguintes componentes:
-
Azure AD B2C – o servidor de autorização que verifica as credenciais do usuário
- Os usuários autenticados acessam aplicativos locais usando uma conta local no diretório do Azure AD B2C
- IdP (provedor de identidade) social ou empresarial externo: um provedor OIDC, Facebook, Google ou GitHub
- Strata Maverics Identity Orchestrator: o serviço de logon do usuário que passa a identidade para aplicativos por meio de cabeçalhos HTTP
O diagrama de arquitetura a seguir mostra a implementação.
- O usuário solicita acesso ao aplicativo hospedado local. O Maverics Identity Orchestrator representa a solicitação para o aplicativo.
- O Orchestrator verifica o estado da autenticação do usuário. Se não houver um token de sessão, ou se o token for inválido, o usuário irá para o Azure AD B2C para autenticação
- O Azure AD B2C envia a solicitação de autenticação ao IdP social configurado.
- O IdP desafia o usuário a fornecer credenciais. A MFA (autenticação multifator) poderá ser necessária.
- O IdP envia a resposta de autenticação ao Azure AD B2C. O usuário pode criar uma conta local no diretório do Azure AD B2C.
- O Azure AD B2C envia a solicitação do usuário para o ponto de extremidade especificado durante o registro de aplicativo do Orchestrator no locatário do Azure AD B2C.
- O Orchestrator avalia as políticas de acesso e os valores de atributo para os cabeçalhos HTTP encaminhados ao aplicativo. O Orchestrator pode chamar outros provedores de atributo para recuperar informações e definir os valores de cabeçalho. O Orchestrator envia a solicitação ao aplicativo.
- O usuário é autenticado e tem acesso ao aplicativo.
Maverics Identity Orchestrator
Para obter o software e a documentação, acesse strata.io Contact Strata Identity. Determine os pré-requisitos do Orchestrator. Instale e configure.
Configurar o seu locatário do Azure AD B2C
Durante as seguintes instruções, documente:
- Nome e identificador do locatário
- ID do Cliente
- Segredo do cliente
- Declarações configuradas
- URI de redirecionamento
- Registre um aplicativo Web no Azure Active Directory B2C no locatário do Azure AD B2C.
- Conceda permissões de API do Graph do Microsoft MS aos seus aplicativos. Use as permissões:
offline_access
,openid
. - Adicione um URI de redirecionamento que corresponda ao parâmetro
oauthRedirectURL
da configuração do conector do Orchestrator do Azure AD B2C, por exemplo,https://example.com/oidc-endpoint
. - Crie fluxos de usuário e políticas personalizadas no Azure Active Directory B2C.
- Adicione um provedor de identidade ao seu locatário do Azure Active Directory B2C. Conecte o usuário usando uma conta local, social ou empresarial.
- Defina os atributos a serem coletados durante a inscrição.
- Especifique os atributos a serem retornados ao aplicativo por meio da sua instância do Orchestrator.
Observação
O Orchestrator consome atributos de declarações retornadas pelo Azure AD B2C e pode recuperar atributos de sistemas de identidade conectados, como diretórios e bancos de dados LDAP. Esses atributos estão nos cabeçalhos HTTP e são enviados ao aplicativo upstream local.
Configurar o Maverics Identity Orchestrator
Use as instruções nas seções a seguir para configurar uma instância do Orchestrator.
Requisitos do servidor do Maverics Identity Orchestrator
Você pode executar a instância do Orchestrator em qualquer servidor, seja local ou em uma infraestrutura de nuvem pública por provedor, como Azure, AWS ou GCP.
- Sistema operacional: REHL 7.7 ou superior, CentOS 7+
- Disco: 10 GB (pequeno)
- Memória: 16 GB
- Portas: 22 (SSH/SCP), 443, 80
- Acesso à raiz: para tarefas administrativas/de instalação
-
Maverics Identity Orchestrator: é executado como usuário
maverics
emsystemd
- Saída de rede: do servidor que hospeda o Maverics Identity Orchestrator e que pode acessar seu locatário do Microsoft Entra
Instalar o Maverics Identity Orchestrator
Obtenha o pacote RPM mais recente do Maverics.
Coloque o pacote no sistema no qual deseja instalar o Maverics. Se estiver copiando para um host remoto, use o scp SSH.
Execute o comando a seguir. Use seu nome de arquivo para substituir
maverics.rpm
.sudo rpm -Uvf maverics.rpm
Por padrão, o Maverics está no diretório
/usr/local/bin
.O Maverics é executado como um serviço em
systemd
.Para verificar se o serviço Maverics está em execução, execute o seguinte comando:
sudo service maverics status
A mensagem a seguir (ou semelhante) é exibida.
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
Observação
Se o Maverics não for iniciado, execute o seguinte comando:
journalctl --unit=maverics.service --reverse
A entrada de log mais recente aparece na saída.
- O arquivo
maverics.yaml
padrão é criado no diretório/etc/maverics
. - Configure seu Orchestrator para proteger o aplicativo.
- Integre ao Azure AD B2C e ao armazenamento.
- Recupere segredos do Azure Key Vault.
- Defina o local de onde o Orchestrator lê sua configuração.
Fornecer configuração usando variáveis de ambiente
Configure suas instâncias do Orchestrator com variáveis de ambiente.
MAVERICS_CONFIG
Essa variável de ambiente informa à instância do Orchestrator quais arquivos de configuração YAML usar e onde encontrá-los durante a inicialização ou reinicialização. Defina a variável de ambiente em /etc/maverics/maverics.env
.
Criar a configuração de TLS do Orchestrator
O campo tls
em maverics.yaml
declara as configurações de segurança da camada de transporte que a instância do Orchestrator usará. Os conectores usam objetos TLS e o servidor do Orchestrator.
A chave maverics
é reservada para o servidor do Orchestrator. Use outras chaves para injetar um objeto TLS em um conector.
tls:
maverics:
certFile: /etc/maverics/maverics.cert
keyFile: /etc/maverics/maverics.key
Configurar o conector do Azure AD B2C
Os orquestradores usam conectores para fazer a integração com provedores de autenticação e de atributos. O Gateway de Aplicativo do Orchestrator usa o conector do Azure AD B2C como um provedor de autenticação e de atributos. O Azure AD B2C usa o IdP social para autenticação e, em seguida, fornece atributos para o Orchestrator, passando-os em declarações definidas em cabeçalhos HTTP.
A configuração do Conector corresponde ao aplicativo registrado no locatário do Azure AD B2C.
- Na configuração do aplicativo, copie a ID e o segredo do cliente e o URI de redirecionamento em seu locatário.
- Insira um nome do Conector (o exemplo é
azureADB2C
). - Defina o conector
type
comoazure
. - Anote o nome do Conector. Você usará esse valor em outros parâmetros de configuração.
- Defina o
authType
paraoidc
. - Para o parâmetro
oauthClientID
, defina a ID do cliente copiada. - Para o parâmetro
oauthClientSecret
, defina o Segredo do cliente copiado. - Para o parâmetro
oauthRedirectURL
, defina o URI de redirecionamento copiado. - O Conector OIDC do Azure AD B2C usa o ponto de extremidade OIDC para descobrir metadados, incluindo URLs e chaves de assinatura. Para o ponto de extremidade do locatário, use
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
Definir o Azure AD B2C como seu provedor de autenticação
Um provedor de autenticação determina a autenticação para usuários que não apresentam uma sessão válida durante uma solicitação de recurso de aplicativo. A configuração de locatário do Azure AD B2C determina como os usuários são desafiados por credenciais, enquanto aplica outras políticas de autenticação. Um exemplo é exigir um segundo fator para concluir a autenticação e decidir o que é retornado ao Gateway de Aplicativo do Orchestrator após a autenticação.
O valor de authProvider
deve corresponder ao valor name
do Conector.
authProvider: azureADB2C
Proteger aplicativos locais com um Gateway de Aplicativo do Orchestrator
A configuração do Gateway de Aplicativo do Orchestrator declara como o Azure AD B2C protege seu aplicativo e como os usuários acessam o aplicativo.
- Insira um nome do gateway de aplicativo.
- Defina o
location
. O exemplo usa a raiz de aplicativo/
. - Defina o aplicativo protegido em
upstream
. Use a convenção host:port:https://example.com:8080
. - Defina os valores para páginas de erro e não autorizadas.
- Defina os nomes do cabeçalho HTTP e os valores de atributo para o aplicativo para estabelecer a autenticação e o controle. Os nomes de cabeçalho normalmente correspondem à configuração do aplicativo. Os valores de atributo são separados por namespace pelo Conector. No exemplo, os valores retornados do Azure AD B2C têm como prefixo o nome do Conector
azureADB2C
. O sufixo é o nome do atributo com o valor necessário, por exemplo,given_name
. - Defina as políticas. Três ações são definidas:
allowUnauthenticated
,allowAnyAuthenticated
eallowIfAny
. Cada ação é associada a umresource
. A política é avaliada para esseresource
.
Observação
headers
e policies
usam as extensões de serviço JavaScript ou GoLang para implementar lógica arbitrária.
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 como provedor de segredos
Proteja os segredos que o Orchestrator usa para se conectar ao Azure AD B2C e a outros sistemas de identidade. O Maverics carrega segredos em texto sem formatação de maverics.yaml
, no entanto, neste tutorial, use o Azure Key Vault como o provedor de segredos.
Siga as instruções em Início Rápido: Definir e recuperar um segredo do Azure Key Vault usando o portal do Azure. Adicione seus segredos ao cofre e anote o SECRET NAME
de cada segredo. Por exemplo, AzureADB2CClientSecret
.
Para declarar um valor como um segredo em um arquivo de configuração maverics.yaml
, empacote o segredo com colchetes angulares:
connectors:
- name: AzureADB2C
type: azure
oauthClientID: <AzureADB2CClientID>
oauthClientSecret: <AzureADB2CClientSecret>
O valor entre colchetes angulares deve corresponder ao SECRET NAME
fornecido a um segredo no Azure Key Vault.
Para carregar segredos do Azure Key Vault, defina a variável de ambiente MAVERICS_SECRET_PROVIDER
no arquivo /etc/maverics/maverics.env
, com as credenciais encontradas no arquivo azure-credentials.json. Use o seguinte padrão:
MAVERICS_SECRET_PROVIDER='azurekeyvault://<KEYVAULT NAME>.vault.azure.net?clientID=<APPID>&clientSecret=<PASSWORD>&tenantID=<TENANT>'
Concluir a configuração
As informações a seguir ilustram como a configuração do Orchestrator é exibida.
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
Testar o fluxo
- Navegue até a URL do aplicativo local:
https://example.com/sonar/dashboard
. - O Orchestrator redireciona para a página de fluxo do usuário.
- Na lista, escolha o IdP.
- Insira as credenciais, incluindo um token MFA, se exigido pelo IdP.
- Você é redirecionado ao Azure AD B2C, que encaminha a solicitação do aplicativo para o URI de redirecionamento do Orchestrator.
- O Orchestrator avalia as políticas e calcula os cabeçalhos.
- O aplicativo solicitado é exibido.