Compartilhar via


Autenticação local no construtor de API de Dados

Ao desenvolver uma solução usando o Construtor de API de Dados localmente ou ao executar o Construtor de API de Dados localmente, você precisa testar as opções de autenticação e autorização configuradas simulando uma solicitação com uma função ou declaração específica.

Para simular uma solicitação autenticada sem configurar um provedor de autenticação (como Microsoft Entra ID, por exemplo), você pode utilizar os Simulator provedores de autenticação ou StaticWebApps :

Usar o Simulator provedor

Simulator é um provedor de autenticação configurável que instrui o mecanismo do construtor de API de Dados a tratar todas as solicitações como autenticadas.

  • No mínimo, todas as solicitações são avaliadas no contexto da função Authenticateddo sistema .
  • Se desejado, a solicitação é avaliada no contexto de qualquer função indicada no X-MS-API-ROLE cabeçalho Http.

Observação

Embora a função desejada seja respeitada, as permissões de autorização que definem políticas de banco de dados não funcionarão porque as declarações personalizadas não podem ser definidas para o usuário autenticado com o Simulator provedor. Continue para a seção Usar o StaticWebApps provedor para testar políticas de autorização de banco de dados.

1. Atualizar o provedor de autenticação de configuração de runtime

Verifique se no arquivo de configuração você está usando o provedor de autenticação e development o Simulator modo está especificado. Consulte esta seção de configuração de exemplo host :

"host": {
  "mode": "development",
  "authentication": {
    "provider": "Simulator"
  }
}

2. Especifique o contexto de função da solicitação

Com Simulator como provedor de autenticação do Construtor de API de Dados, nenhum cabeçalho personalizado é necessário para definir o contexto de função para a função Authenticateddo sistema :

curl --request GET \
  --url http://localhost:5000/api/books \

Para definir o contexto de função como qualquer outra função, incluindo a função Anonymousdo sistema , o X-MS-API-ROLE cabeçalho deve ser incluído com a função desejada:

curl --request GET \
  --url http://localhost:5000/api/books \
  --header 'X-MS-API-ROLE: author' \

Usar o StaticWebApps provedor

O StaticWebApps provedor de autenticação instrui o Construtor de API de Dados a procurar um conjunto de cabeçalhos HTTP presentes somente ao executar em um ambiente de Aplicativos Web Estáticos. O cliente define esses cabeçalhos HTTP ao executar localmente para simular um usuário autenticado, incluindo qualquer associação de função ou declarações personalizadas.

Observação

As instâncias fornecidas pelo cliente do cabeçalho Http, X-MS-CLIENT-PRINCIPAL, só funcionarão ao desenvolver localmente porque os ambientes de Aplicativos Web Estáticos do Azure de produção removem todas as instâncias fornecidas pelo cliente desse cabeçalho.

Verifique se no arquivo de configuração você está usando o StaticWebApps provedor de autenticação. Consulte esta seção de configuração de exemplo host :

"host": {
  "mode": "development",
  "authentication": {
    "provider": "StaticWebApps"
  }
}

1. Enviar solicitações fornecendo um cabeçalho gerado X-MS-CLIENT-PRINCIPAL

Depois que o construtor de API de Dados estiver em execução localmente e configurado para usar o StaticWebApps provedor de autenticação, você poderá gerar um objeto de entidade de segurança do cliente manualmente usando o seguinte modelo:

{  
  "identityProvider": "test",
  "userId": "12345",
  "userDetails": "john@contoso.com",
  "userRoles": ["author", "editor"]
}

Os metadados de usuário autenticados do Aplicativo Web Estático têm as seguintes propriedades:

Propriedade Descrição
identityProvider Qualquer valor de cadeia de caracteres.
userId Um identificador exclusivo do usuário.
userDetails Nome ou endereço de email do usuário.
userRoles Uma matriz das funções atribuídas do usuário.

Observação

Conforme observado na documentação do Aplicativos Web Estáticos, o X-MS-CLIENT-PRINCIPAL cabeçalho não contém a claims matriz.

Para ser passado com o X-MS-CLIENT-PRINCIPAL cabeçalho, o conteúdo JSON deve ser codificado em Base64. Você pode usar qualquer ferramenta online ou offline para fazer isso. Uma dessas ferramentas é o DevToys. Um exemplo de conteúdo codificado em Base64 que representa o JSON referenciado anteriormente:

eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9

A solicitação cURL a seguir simula um usuário autenticado recuperando a lista de registros de entidade disponíveis Book no contexto da author função:

curl --request GET \
  --url http://localhost:5000/api/books \
  --header 'X-MS-API-ROLE: author' \
  --header 'X-MS-CLIENT-PRINCIPAL: eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9'