Compartilhar via


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:

  • 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.

Diagrama da arquitetura de integração do Azure AD B2C, com o Maverics Identity Orchestrator, para acesso a aplicativos híbridos.

  1. O usuário solicita acesso ao aplicativo hospedado local. O Maverics Identity Orchestrator representa a solicitação para o aplicativo.
  2. 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
  3. O Azure AD B2C envia a solicitação de autenticação ao IdP social configurado.
  4. O IdP desafia o usuário a fornecer credenciais. A MFA (autenticação multifator) poderá ser necessária.
  5. 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.
  6. 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.
  7. 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.
  8. 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
  1. Registre um aplicativo Web no Azure Active Directory B2C no locatário do Azure AD B2C.
  2. Conceda permissões de API do Graph do Microsoft MS aos seus aplicativos. Use as permissões: offline_access, openid.
  3. 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.
  4. Crie fluxos de usuário e políticas personalizadas no Azure Active Directory B2C.
  5. 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.
  6. Defina os atributos a serem coletados durante a inscrição.
  7. 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 em systemd
  • 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

  1. Obtenha o pacote RPM mais recente do Maverics.

  2. Coloque o pacote no sistema no qual deseja instalar o Maverics. Se estiver copiando para um host remoto, use o scp SSH.

  3. 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.

  4. O Maverics é executado como um serviço em systemd.

  5. Para verificar se o serviço Maverics está em execução, execute o seguinte comando:

    sudo service maverics status

  6. 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.

  1. O arquivo maverics.yaml padrão é criado no diretório /etc/maverics.
  2. Configure seu Orchestrator para proteger o aplicativo.
  3. Integre ao Azure AD B2C e ao armazenamento.
  4. Recupere segredos do Azure Key Vault.
  5. 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.

  1. Na configuração do aplicativo, copie a ID e o segredo do cliente e o URI de redirecionamento em seu locatário.
  2. Insira um nome do Conector (o exemplo é azureADB2C).
  3. Defina o conector type como azure.
  4. Anote o nome do Conector. Você usará esse valor em outros parâmetros de configuração.
  5. Defina o authType para oidc.
  6. Para o parâmetro oauthClientID, defina a ID do cliente copiada.
  7. Para o parâmetro oauthClientSecret, defina o Segredo do cliente copiado.
  8. Para o parâmetro oauthRedirectURL, defina o URI de redirecionamento copiado.
  9. 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.

  1. Insira um nome do gateway de aplicativo.
  2. Defina o location. O exemplo usa a raiz de aplicativo /.
  3. Defina o aplicativo protegido em upstream. Use a convenção host:port: https://example.com:8080.
  4. Defina os valores para páginas de erro e não autorizadas.
  5. 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.
  6. Defina as políticas. Três ações são definidas: allowUnauthenticated, allowAnyAuthenticated e allowIfAny. Cada ação é associada a um resource. A política é avaliada para esse resource.

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

  1. Navegue até a URL do aplicativo local: https://example.com/sonar/dashboard.
  2. O Orchestrator redireciona para a página de fluxo do usuário.
  3. Na lista, escolha o IdP.
  4. Insira as credenciais, incluindo um token MFA, se exigido pelo IdP.
  5. Você é redirecionado ao Azure AD B2C, que encaminha a solicitação do aplicativo para o URI de redirecionamento do Orchestrator.
  6. O Orchestrator avalia as políticas e calcula os cabeçalhos.
  7. O aplicativo solicitado é exibido.

Próximas etapas