Partilhar via


Autenticação Local no Construtor de API de Dados

Ao desenvolver uma solução com o Construtor de API de Dados localmente ou ao executar o construtor de API de Dados no local, tem de testar as opções de autenticação e autorização configuradas ao simular um pedido com uma função ou afirmação específica.

Para simular um pedido autenticado sem configurar um fornecedor de autenticação (como Microsoft Entra ID, por exemplo), pode utilizar os Simulator fornecedores de autenticação ouStaticWebApps:

Utilizar o Simulator fornecedor

Simulator é um fornecedor de autenticação configurável que instrui o motor do construtor de API de Dados a tratar todos os pedidos como autenticados.

  • No mínimo, todos os pedidos são avaliados no contexto da função Authenticatedde sistema .
  • Se desejar, o pedido é avaliado no contexto de qualquer função indicada no X-MS-API-ROLE cabeçalho Http.

Nota

Embora a função pretendida seja respeitada, as permissões de autorização que definem as políticas de base de dados não funcionarão porque as afirmações personalizadas não podem ser definidas para o utilizador autenticado com o Simulator fornecedor. Continue para a secção Utilizar o StaticWebApps fornecedor para testar as políticas de autorização da base de dados.

1. Atualize o fornecedor de autenticação de configuração do runtime

Certifique-se de que, no ficheiro de configuração, está a utilizar o Simulator fornecedor de autenticação e development o modo está especificado. Veja esta secção de configuração de exemplo host :

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

2. Especifique o contexto de função do pedido

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

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

Para definir o contexto da função para qualquer outra função, incluindo a função Anonymousde sistema, o X-MS-API-ROLE cabeçalho tem de ser incluído com a função pretendida:

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

Utilizar o StaticWebApps fornecedor

O StaticWebApps fornecedor de autenticação instrui o Construtor de API de Dados a procurar um conjunto de cabeçalhos HTTP apenas presentes quando são executados num ambiente Aplicações Web Estáticas. O cliente define estes cabeçalhos HTTP ao executar localmente para simular um utilizador autenticado, incluindo qualquer associação a funções ou afirmações personalizadas.

Nota

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

Certifique-se de que, no ficheiro de configuração, está a utilizar o StaticWebApps fornecedor de autenticação. Veja esta secção de configuração de exemplo host :

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

1. Enviar pedidos que fornecem um cabeçalho gerado X-MS-CLIENT-PRINCIPAL

Assim que o Construtor de API de Dados estiver a ser executado localmente e configurado para utilizar o StaticWebApps fornecedor de autenticação, pode gerar manualmente um objeto principal de cliente com o seguinte modelo:

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

Os metadados de utilizador autenticados da Aplicação Web Estática têm as seguintes propriedades:

Propriedade Descrição
identityProvider Qualquer valor de cadeia.
userId Um identificador exclusivo para o utilizador.
userDetails Nome de utilizador ou endereço de e-mail do utilizador.
userRoles Uma matriz das funções atribuídas pelo utilizador.

Nota

Conforme indicado na documentação Aplicações Web Estáticas, o X-MS-CLIENT-PRINCIPAL cabeçalho não contém a claims matriz.

Para ser transmitido com o X-MS-CLIENT-PRINCIPAL cabeçalho, o payload JSON tem de ser codificado com Base64. Pode utilizar qualquer ferramenta online ou offline para o fazer. Uma dessas ferramentas é DevToys. Um payload codificado com base64 de exemplo que representa o JSON referenciado anteriormente:

eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9

O seguinte pedido cURL simula um utilizador autenticado a obter a lista de registos de entidades disponíveis Book no contexto da função author :

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