Publicar aplicativos do Power Apps baseados em código com uma entidade de serviço

Use uma entidade de serviço Microsoft Entra para autenticar a CLI do Power Apps sem abrir um navegador ou usar uma conta de usuário armazenada em cache. Esse método de autenticação é útil para pipelines de CI/CD (integração contínua e entrega contínua) e outros processos automatizados que publicam atualizações em um aplicativo de código existente.

Para publicar uma atualização, a entidade de serviço precisa de acesso ao ambiente de destino do Power Platform e de acesso de edição ao aplicativo de código. Somente as permissões de nível de ambiente não concedem permissão para atualizar um aplicativo existente. O compartilhamento de aplicativos e a autenticação do service principal são recursos separados, mas compartilhar o aplicativo é um pré-requisito para publicar atualizações usando o service principal.

Importante

Um criador de aplicativos deve compartilhar o aplicativo com a entidade de serviço antes que a entidade de serviço publique sua primeira atualização. O compartilhamento é um pré-requisito único, não faz parte do processo de publicação recorrente. Uma entidade de serviço não pode conceder acesso a si mesma.

Pré-requisitos

  • Um aplicativo de código Power Apps que você já publicou

  • Uma conta do criador de aplicativos que tem permissão para compartilhar o aplicativo

  • Uma entidade de serviço do Microsoft Entra que tem acesso ao ambiente de destino da Power Platform

  • Estes valores de entidade de serviço:

    • ID do aplicativo (cliente)
    • Segredo do cliente
    • ID do Diretório (locatário)
    • ID do objeto aplicativo empresarial

Entender os identificadores da entidade de serviço

Microsoft Entra ID fornece vários identificadores para um registro de aplicativo e sua entidade de serviço. Use o identificador correto para cada operação.

Identificador Onde encontrá-lo Como ele é usado
ID do aplicativo (cliente) Registros de aplicativo Defina a variável de ambiente PA_CLI_SP_CLIENT_ID.
ID do Diretório (locatário) Registros de aplicativo Defina a variável de ambiente PA_CLI_SP_TENANT_ID.
ID do objeto aplicativo empresarial Aplicativos empresariais Passe para pa app share --principal.

Pré-requisito: compartilhar o aplicativo com a entidade de serviço

Se o aplicativo já tiver acesso de edição para a entidade de serviço, ignore esta seção. Caso contrário, conclua essas etapas uma vez no computador do fabricante do aplicativo. Não inclua o comando de compartilhamento no pipeline de CI/CD.

Importante

Não use a ID de Objeto mostrada em Registros de aplicativo no centro de administração do Microsoft Entra, em que você encontra a ID do aplicativo (cliente), a ID do diretório (locatário) e o segredo do cliente. Em vez disso, use a ID do objeto mostrada em Aplicativos empresariais.

Como alternativa, se você souber a ID do aplicativo (cliente), recupere a ID do objeto aplicativo empresarial usando o comando CLI do Azureaz ad sp show:

az ad sp show --id <application-client-id> --query id --output tsv

Faça login como o criador do aplicativo e compartilhe o aplicativo Code

Não habilite a autenticação de entidade de serviço ao compartilhar o aplicativo.

Entre interativamente com a conta do criador de aplicativos usando o pa auth login comando:

pa auth login --account <maker-email>

Confirme se a conta do criador de aplicativos está ativa usando o pa auth status comando:

pa auth status

Na pasta do aplicativo, conceda à entidade de serviço acesso de edição usando o pa app share comando:

pa app share --principal <enterprise-application-object-id> --access edit

O edit nível de acesso concede à entidade de serviço permissão para atualizar o aplicativo usando o comando pa app push.

Para permitir executar o aplicativo sem atualizá-lo, use --access play:

pa app share --principal <enterprise-application-object-id> --access play

Publicar atualizações como o principal de serviço

Depois que o aplicativo tiver acesso de edição para a entidade de serviço, use a entidade de serviço para publicar atualizações por meio de um pipeline de CI/CD ou de um computador local. Repita este procedimento para cada atualização. Você não precisa compartilhar o aplicativo novamente, a menos que o acesso da entidade de serviço seja removido.

Configurar a autenticação da entidade de serviço

Defina as variáveis de ambiente de autenticação da entidade de serviço na sessão de terminal ou trabalho de CI/CD que você usa para publicar a atualização. Essas variáveis fazem com que a CLI se autentique como a entidade de serviço em vez de usar uma conta interativa armazenada em cache.

$env:PA_CLI_USE_SP_AUTH = "true"
$env:PA_CLI_SP_CLIENT_ID = "<application-client-id>"
$env:PA_CLI_SP_CLIENT_SECRET = "<client-secret>"
$env:PA_CLI_SP_TENANT_ID = "<tenant-id>"

Depois de definir as variáveis, execute os comandos de compilação e publicação dessa sessão de terminal ou trabalho de CI/CD.

Compilar e publicar a atualização

Crie o aplicativo usando o comando configurado para seu projeto. Por exemplo:

npm run build

Publicar o aplicativo compilado no modo nãointerativo usando o pa app push comando

pa app push --non-interactive

A CLI usa as credenciais da entidade de serviço definidas nas variáveis de ambiente e não abre o navegador nem usa uma conta interativa em cache.

Quando o comando é concluído, um código de 0 saída indica que a atualização foi publicada. Um código de saída diferente de zero indica que o comando falhou.