Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 a ID do Microsoft Entra, por exemplo), você pode utilizar os Simulator provedores de autenticação:
1. Usar o provedor Simulator
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-ROLEcabeç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 funcionam porque as declarações personalizadas não podem ser definidas para o usuário autenticado com o Simulator provedor.
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 Simulator e o modo development está especificado. Consulte esta seção de configuração de exemplo host :
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
Especificar o contexto de função da solicitação
Com Simulator como provedor de autenticação do Data API Builder, nenhum cabeçalho personalizado é necessário para definir o contexto de função para a função Authenticated do sistema:
curl --request GET \
--url http://localhost:5000/api/books \
Para definir o contexto de função para 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' \
2. Usar o AppService provedor
O provedor de autenticação instrui o Data API builder a procurar um conjunto de cabeçalhos HTTP que estão presentes apenas quando executados em um ambiente de Azure Container Apps. 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.
"host": {
"mode": "development",
"authentication": {
"provider": "AppService"
}
}
Enviar solicitações fornecendo um cabeçalho gerado X-MS-CLIENT-PRINCIPAL
Depois que a API de Dados estiver sendo executada localmente e configurada para usar o provedor de autenticação AppService, você poderá gerar um objeto principal do cliente manualmente usando o seguinte modelo:
{
"identityProvider": "test",
"userId": "12345",
"userDetails": "john@contoso.com",
"userRoles": ["author", "editor"]
}
O Serviço de Aplicativo tem as seguintes propriedades:
| Propriedade | Descrição |
|---|---|
| identityProvider | Qualquer valor de cadeia de caracteres. |
| ID do usuário | Um identificador exclusivo para o usuário. |
| Detalhes do usuário | Nome ou endereço de email do usuário. |
| funçõesDoUsuário | Uma matriz das funções atribuídas pelo usuário. |
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'