Autenticação personalizada no Aplicativos Web Estáticos do Azure

O Aplicativos Web Estáticos do Azure fornece autenticação gerenciada que usa registros de provedor gerenciados pelo Azure. Para habilitar mais flexibilidade no registro, você pode substituir os padrões por um registro personalizado.

  • A autenticação personalizada também permite configurar provedores personalizados que suportam OpenID Connect. Essa configuração permite o registro de vários provedores externos.

  • O uso de registros personalizados desabilita todos os provedores pré-configurados.

Observação

A autenticação personalizada só está disponível no plano Standard do Aplicativos Web Estáticos do Azure.

Configurar um provedor de identidade personalizado

Os provedores de identidade personalizados são configuradas na seção auth do arquivo de configuração.

Para evitar colocar segredos no controle do código-fonte, a configuração procura na configuração de aplicativo por um nome correspondente no arquivo de configuração. Você também pode optar por armazenar seus segredos no Azure Key Vault.

Para criar o registro, comece criando as seguintes configurações de aplicativo:

Nome da Configuração Valor
AZURE_CLIENT_ID A ID do aplicativo (cliente) para o registro do aplicativo do Microsoft Entra.
`AZURE_CLIENT_SECRET_APP_SETTING_NAME O nome da configuração do aplicativo que contém o segredo do cliente do registro do aplicativo Microsoft Entra.

Em seguida, use o exemplo a seguir para configurar o provedor no arquivo de configuração.

Os provedores do Microsoft Entra estão disponíveis em duas versões diferentes. A versão 1 define explicitamente userDetailsClaim, que permite que a carga retorne as informações do usuário. Por outro lado, a versão 2 retorna informações de usuário por padrão e é designada por v2.0 na URL openIdIssuer.

Microsoft Entra Versão 1

{
  "auth": {
    "identityProviders": {
      "azureActiveDirectory": {
        "userDetailsClaim": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",
        "registration": {
          "openIdIssuer": "https://login.microsoftonline.com/<TENANT_ID>",
          "clientIdSettingName": "AZURE_CLIENT_ID",
          "clientSecretSettingName": "AZURE_CLIENT_SECRET_APP_SETTING_NAME"
        }
      }
    }
  }
}

Certifique-se de substituir <TENANT_ID> pela sua ID de locatário do Microsoft Entra.

Microsoft Entra Versão 2

{
  "auth": {
    "identityProviders": {
      "azureActiveDirectory": {
        "registration": {
          "openIdIssuer": "https://login.microsoftonline.com/<TENANT_ID>/v2.0",
          "clientIdSettingName": "AZURE_CLIENT_ID",
          "clientSecretSettingName": "AZURE_CLIENT_SECRET_APP_SETTING_NAME"
        }
      }
    }
  }
}

Certifique-se de substituir <TENANT_ID> pela sua ID de locatário do Microsoft Entra.

Para obter mais informações sobre como configurar o Microsoft Entra ID, confira a documentação de Autenticação/Autorização do Serviço de Aplicativo sobre como usar um registro existente.

Para configurar quais contas podem entrar, confira Modificar as contas compatíveis com um aplicativo e Restringir o seu aplicativo do Microsoft Entra a um conjunto de usuários em um locatário do Microsoft Entra.

Observação

Enquanto a seção de configuração do Microsoft Entra ID é azureActiveDirectory, a plataforma utiliza o alias aad nas URLs para logon, logoff e limpeza de informações do usuário. Consulte a seção autenticação e autorização para obter mais informações.

Certificado personalizado

Use as etapas a seguir para adicionar um certificado personalizado ao registro do aplicativo do Microsoft Entra ID.

  1. Se ainda não tiver feito isso, carregue o seu certificado em um Microsoft Key Vault.

  2. Adicione uma identidade gerenciada em seu Aplicativo Web Estático.

    Para identidades gerenciadas atribuídas pelo usuário, defina a propriedade keyVaultReferenceIdentity em seu objeto de site estático para o resourceId da identidade gerenciada atribuída pelo usuário.

    Ignore esta etapa se a identidade gerenciada for atribuída pelo sistema.

  3. Conceda à identidade gerenciada as seguintes políticas de acesso:

    • Segredos: Obter/Listar
    • Certificados: Obter/Listar
  4. Atualize a seção de configuração de autenticação da seção de configuração azureActiveDirectory com um valor clientSecretCertificateKeyVaultReference, conforme mostrado no exemplo a seguir:

    {
      "auth": {
        "rolesSource": "/api/GetRoles",
        "identityProviders": {
          "azureActiveDirectory": {
            "userDetailsClaim": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
            "registration": {
              "openIdIssuer": "https://login.microsoftonline.com/common/v2.0",
              "clientIdSettingName": "AZURE_CLIENT_ID",
              "clientSecretCertificateKeyVaultReference": "@Microsoft.KeyVault(SecretUri=https://<KEY_VAULT_NAME>.azure.net/certificates/<CERTIFICATE_NAME>/<CERTIFICATE_VERSION_ID>)",
              "clientSecretCertificateThumbprint": "*"
            }
          }
        }
      }
    }
    

    Certifique-se de substituir os seus valores para os espaços reservados entre <>.

    No URI secreto, especifique o nome do cofre de chaves e o nome do certificado. Se você quiser fixar em uma versão, inclua a versão do certificado; caso contrário, omita a versão para permitir que o runtime selecione a versão mais recente do certificado.

    Defina clientSecretCertificateThumbprint igual a * para sempre efetuar pull da versão mais recente da impressão digital dos certificados.

Retornos de chamada de autenticação

Os provedores de identidade exigem uma URL de redirecionamento para concluir a solicitação de logon ou logout. A maioria dos provedores exige que você adicione as URLs de retorno de chamada a uma lista de permitir. Os pontos de extremidade a seguir estão disponíveis como destinos de redirecionamento.

Tipo Padrão de URL
Logon https://<YOUR_SITE>/.auth/login/<PROVIDER_NAME_IN_CONFIG>/callback
Logout https://<YOUR_SITE>/.auth/logout/<PROVIDER_NAME_IN_CONFIG>/callback

Se você estiver usando o Microsoft Entra ID, use aad como o valor do espaço reservado <PROVIDER_NAME_IN_CONFIG>.

Observação

Esses URLs são fornecidos por Aplicativos Web Estáticos do Azure para receber a resposta do provedor de autenticação, não é necessário criar páginas nessas rotas.

Detalhes de logon, logoff e usuário

Para usar um provedor de identidade personalizado, use os padrões de URL a seguir.

Ação Padrão
Logon /.auth/login/<PROVIDER_NAME_IN_CONFIG>
Logout /.auth/logout
Detalhes do usuário /.auth/me
Limpar detalhes do usuário /.auth/purge/<PROVIDER_NAME_IN_CONFIG>

Se você estiver usando o Microsoft Entra ID, use aad como o valor do espaço reservado <PROVIDER_NAME_IN_CONFIG>.

Gerenciar funções

Cada usuário que acessa um aplicativo Web estático pertence a uma ou mais funções. Há duas funções internas às quais os usuários podem pertencer:

  • anônimo: todos os usuários pertencem automaticamente à função anônima.
  • autenticado: todos os usuários que estão conectados pertencem à função autenticado.

Além das funções internas, você pode atribuir funções personalizadas aos usuários e referenciá-las no arquivo staticwebapp.config.json.

Adicionar um usuário a uma função

Para adicionar um usuário a uma função, você gera convites que permitem que você associe usuários a funções específicas. As funções são definidas e mantidas no arquivo staticwebapp.config.json.

Criar um convite

Os convites são específicos para provedores de autorização individuais, portanto, considere as necessidades do seu aplicativo à medida que você seleciona quais provedores serão compatíveis. Alguns provedores expõem o endereço de email de um usuário, enquanto outros fornecem apenas o nome de usuário do site.

Provedor de autorização Expor
Microsoft Entra ID endereço de email
GitHub nome de usuário
X nome de usuário

Use as etapas a seguir para criar um convite.

  1. Acesse um recurso do serviço Aplicativos Web Estáticos no portal do Azure.
  2. Em Configurações, selecione Gerenciamento de funções.
  3. Selecione Convidar.
  4. Selecione um Provedor de autorização na lista de opções.
  5. Adicione o nome de usuário ou o endereço de email do destinatário na caixa Detalhes do convidado.
    • Para GitHub e X, insira o nome de usuário. Para todos os outros, insira o endereço de email do destinatário.
  6. Selecione o domínio do seu site estático no menu suspenso Domínio.
    • O domínio que você selecionar é o domínio que aparece no convite. Se você tiver um domínio personalizado associado ao seu site, escolha o domínio personalizado.
  7. Adicione uma lista separada por vírgulas de nomes de função na caixa Função.
  8. Insira o número máximo de horas que você deseja que o convite permaneça válido.
    • O limite máximo possível é de 168 horas, que corresponde a sete dias.
  9. Selecione Gerar.
  10. Copie o link da caixa Link do convite.
  11. Envie por email o link do convite ao usuário que você está concedendo acesso.

Quando o usuário seleciona o link no convite, ele será solicitado a entrar com a conta correspondente dele. Uma vez conectado com êxito, o usuário será associado às funções selecionadas.

Cuidado

Certifique-se de que suas regras de rota não entrem em conflito com os provedores de autenticação selecionados. Bloquear um provedor com uma regra de rota impede que os usuários aceitem convites.

Atualizar atribuições de função

  1. Acesse um recurso do serviço Aplicativos Web Estáticos no portal do Azure.
  2. Em Configurações, selecione Gerenciamento de funções.
  3. Selecione o usuário na lista.
  4. Edite a lista de funções na caixa Função.
  5. Selecione Atualizar.

Remover usuário

  1. Acesse um recurso do serviço Aplicativos Web Estáticos no portal do Azure.
  2. Em Configurações, selecione Gerenciamento de funções.
  3. Localize o usuário na lista.
  4. Marque a caixa de seleção na linha do usuário.
  5. Selecione Excluir.

Quando remover um usuário, tenha em mente os seguintes itens:

  • A remoção de um usuário invalida suas permissões.
  • A propagação mundial pode levar alguns minutos.
  • Se o usuário for adicionado de volta ao aplicativo, a userId é alterada.

Próximas etapas