Partilhar via


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

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

  • A autenticação personalizada também permite configurar provedores personalizados que suportam o OpenID Connect. Esta configuração permite o registo de múltiplos fornecedores externos.

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

Nota

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

Configurar um provedor de identidade personalizado

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

Para evitar colocar segredos no controle do código-fonte, a configuração examina as configurações do aplicativo em busca de um nome correspondente no arquivo de configuração. Você também pode optar por armazenar seus segredos no Cofre da Chave do Azure.

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

Nome da Definição Value
AZURE_CLIENT_ID A ID do aplicativo (cliente) para o registro do aplicativo Microsoft Entra.
«AZURE_CLIENT_SECRET_APP_SETTING_NAME O nome da configuração do aplicativo que contém o segredo do cliente para o 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 o userDetailsClaim, que permite que a carga retorne informações do usuário. Por outro lado, a versão 2 retorna informações do openIdIssuer usuário por padrão e é designada por v2.0 na URL.

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> por 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> por sua ID de locatário do Microsoft Entra.

Para obter mais informações sobre como configurar o Microsoft Entra ID, consulte 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, consulte Modificar as contas suportadas por um aplicativo e Restringir seu aplicativo Microsoft Entra a um conjunto de usuários em um locatário do Microsoft Entra.

Nota

Enquanto a seção de configuração para o Microsoft Entra ID é azureActiveDirectory, a plataforma aliases isso nos aad URLs para login, logout e limpeza de informações do usuário. Consulte a seção de 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 Microsoft Entra ID.

  1. Se ainda não estiver, carregue o certificado para um Cofre de Chaves da Microsoft.

  2. Adicione uma identidade gerenciada em seu aplicativo Web estático.

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

    Ignore esta etapa se sua identidade gerenciada for atribuída ao sistema.

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

    • Segredos: Get/List
    • Certificados: Get/List
  4. Atualize a seção auth config da seção configuration azureActiveDirectory com um clientSecretCertificateKeyVaultReference valor, 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 seus valores pelos espaços reservados cercados por <>.

    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 tempo de execução selecione a versão mais recente do certificado.

    Defina clientSecretCertificateThumbprint igual para * sempre puxar a 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 login ou logout. A maioria dos provedores exige que você adicione as URLs de retorno de chamada a uma lista de permissões. Os seguintes pontos de extremidade estão disponíveis como destinos de redirecionamento.

Type Padrão de URL
Iniciar sessão https://<YOUR_SITE>/.auth/login/<PROVIDER_NAME_IN_CONFIG>/callback
Fim de Sessão https://<YOUR_SITE>/.auth/logout/<PROVIDER_NAME_IN_CONFIG>/callback

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

Nota

Essas URLs são fornecidas pelos Aplicativos Web Estáticos do Azure para receber a resposta do provedor de autenticação, você não precisa criar páginas nessas rotas.

Login, logout e detalhes do usuário

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

Ação Padrão
Iniciar sessão /.auth/login/<PROVIDER_NAME_IN_CONFIG>
Fim de Sessão /.auth/logout
Detalhes do utilizador /.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 para o <PROVIDER_NAME_IN_CONFIG> espaço reservado.

Gerir 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 autenticada .

Além das funções internas, você pode atribuir funções personalizadas aos usuários e fazer referência a elas 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 associar 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 ao selecionar quais provedores oferecer suporte. Alguns provedores expõem o endereço de e-mail de um usuário, enquanto outros fornecem apenas o nome de usuário do site.

Provedor de autorização Expõe
Microsoft Entra ID Endereço de E-mail
GitHub nome de utilizador
X nome de utilizador

Use as etapas a seguir para criar um convite.

  1. Vá para um recurso de 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 endereço de e-mail do destinatário na caixa Detalhes do convidado.
    • Para GitHub e X, digite o nome de usuário. Para todos os outros, insira o endereço de e-mail do destinatário.
  6. Selecione o domínio do seu site estático no menu suspenso Domínio .
    • O domínio selecionado é 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. Introduza o número máximo de horas que pretende que o convite permaneça válido.
    • O limite máximo possível é de 168 horas, ou seja, sete dias.
  9. Selecione Gerar.
  10. Copie o link da caixa Convidar link .
  11. Envie o link de convite por e-mail para o usuário ao qual você está concedendo acesso.

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

Atenção

Verifique se as regras de rota não entram 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 as atribuições de funções

  1. Vá para um recurso de 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 utilizador

  1. Vá para um recurso de 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 Eliminar.

Ao remover um usuário, lembre-se dos seguintes itens:

  • Remover um usuário invalida suas permissões.
  • A propagação mundial pode levar alguns minutos.
  • Se o usuário for adicionado novamente ao aplicativo, as userId alterações.

Próximos passos