Compartilhar via


Configurar um Aplicativo Lógico para uso do Fluxo de Trabalho do Ciclo de Vida

Antes de usar um Azure Logic App existente com o recurso de extensão de tarefa personalizada dos Fluxos de Trabalho do Ciclo de Vida, ele deve primeiro ser ajustado para ser compatível. Este guia de referência fornece uma lista de etapas que devem ser executadas para tornar o Aplicativo Lógico do Azure compatível. Para uma orientação sobre como criar um novo Aplicativo Lógico compatível por meio do portal Fluxos de Trabalho do Ciclo de Vida, consulte Disparar Aplicativos Lógicos com base em extensões de tarefa personalizadas.

Determine o tipo de segurança do token da sua extensão de tarefa personalizada

Antes de configurar sua extensão personalizada do Aplicativo Lógico do Azure para uso com Fluxos de Trabalho do Ciclo de Vida, você deve primeiro descobrir que tipo de token de segurança ele possui. Os dois tipos de token de segurança podem ser:

  • Normal
  • Prova de posse (POP)

Para determinar o tipo de token de segurança da sua extensão de tarefa personalizada, verifique a página Extensões personalizadas:

Captura de tela da extensão de tarefa personalizada e do tipo de token.

Observação

Novas extensões de tarefa personalizadas terão apenas o token de segurança do tipo Prova de Posse (POP). Somente as extensões de tarefa criadas antes da inclusão do tipo de segurança do token de Prova de Posse terão um tipo de Normal.

Configurar os Aplicativos Lógicos existentes para uso de LCW

Tornar um aplicativo Lógico do Azure compatível para ser executado com a Extensão de Tarefa Personalizada requer as seguintes etapas:

  • Configurar o gatilho do aplicativo lógico
  • Configure a ação de retorno de chamada (aplicável somente ao cenário de retorno de chamada.)
  • Habilitar identidade gerenciada atribuída pelo sistema (Sempre necessária para as extensões do token de segurança do tipo Normal. Esse também é o padrão para cenários de retorno de chamada com extensões de tarefas personalizadas. Para obter mais informações sobre esse e outros cenários de implantação de extensões de tarefas personalizadas, consulte: Cenários de implantação de extensões de tarefas personalizadas.)
  • Configurar políticas AuthZ

Para configurá-las, siga estas etapas:

  1. Abra o Logic App do Azure que você deseja usar com o Lifecycle Workflow. Os Aplicativos Lógicos podem receber você com uma tela de introdução, que é possível fechar com o X no canto superior direito.

  2. À esquerda da tela, selecione Exibição de código do Aplicativo Lógico.

  3. No editor cole o código a seguir:

    {
      "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
          "HTTP": {
            "inputs": {
              "authentication": {
                "audience": "https://graph.microsoft.com",
                "type": "ManagedServiceIdentity"
              },
              "body": {
                "data": {
                  "operationStatus": "Completed"
                },
                "source": "sample",
                "type": "lifecycleEvent"
              },
              "method": "POST",
              "uri": "https://graph.microsoft.com/beta@{triggerBody()?['data']?['callbackUriPath']}"
            },
            "runAfter": {},
            "type": "Http"
          }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {},
        "triggers": {
          "manual": {
            "inputs": {
              "schema": {
                "properties": {
                  "data": {
                    "properties": {
                      "callbackUriPath": {
                        "description": "CallbackUriPath used for Resume Action",
                        "title": "Data.CallbackUriPath",
                        "type": "string"
                      },
                      "subject": {
                        "properties": {
                          "displayName": {
                            "description": "DisplayName of the Subject",
                            "title": "Subject.DisplayName",
                            "type": "string"
                          },
                          "email": {
                            "description": "Email of the Subject",
                            "title": "Subject.Email",
                            "type": "string"
                          },
                          "id": {
                            "description": "Id of the Subject",
                            "title": "Subject.Id",
                            "type": "string"
                          },
                          "manager": {
                            "properties": {
                              "displayName": {
                                "description": "DisplayName parameter for Manager",
                                "title": "Manager.DisplayName",
                                "type": "string"
                              },
                              "email": {
                                "description": "Mail parameter for Manager",
                                "title": "Manager.Mail",
                                "type": "string"
                              },
                              "id": {
                                "description": "Id parameter for Manager",
                                "title": "Manager.Id",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "userPrincipalName": {
                            "description": "UserPrincipalName of the Subject",
                            "title": "Subject.UserPrincipalName",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "task": {
                        "properties": {
                          "displayName": {
                            "description": "DisplayName for Task Object",
                            "title": "Task.DisplayName",
                            "type": "string"
                          },
                          "id": {
                            "description": "Id for Task Object",
                            "title": "Task.Id",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "taskProcessingResult": {
                        "properties": {
                          "createdDateTime": {
                            "description": "CreatedDateTime for TaskProcessingResult Object",
                            "title": "TaskProcessingResult.CreatedDateTime",
                            "type": "string"
                          },
                          "id": {
                            "description": "Id for TaskProcessingResult Object",
                            "title": "TaskProcessingResult.Id",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "workflow": {
                        "properties": {
                          "displayName": {
                            "description": "DisplayName for Workflow Object",
                            "title": "Workflow.DisplayName",
                            "type": "string"
                          },
                          "id": {
                            "description": "Id for Workflow Object",
                            "title": "Workflow.Id",
                            "type": "string"
                          },
                          "workflowVersion": {
                            "description": "WorkflowVersion for Workflow Object",
                            "title": "Workflow.WorkflowVersion",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "source": {
                    "description": "Context in which an event happened",
                    "title": "Request.Source",
                    "type": "string"
                  },
                  "type": {
                    "description": "Value describing the type of event related to the originating occurrence.",
                    "title": "Request.Type",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "kind": "Http",
            "type": "Request"
          }
        }
      },
      "parameters": {}
    }
    
  4. Selecione Salvar.

  5. Alterne para o designer de Aplicativos Lógicos e inspecione o gatilho configurado e a ação de retorno de chamada. Para criar sua lógica de negócios personalizada, adicione outras ações entre o gatilho e a ação de retorno de chamada. Se você estiver interessado apenas no cenário de disparar e esquecer, poderá remover a ação de retorno de chamada.

  6. À esquerda da tela, selecione Identidade.

  7. Na guia atribuído ao sistema, habilite o status para registrá-lo com o Microsoft Entra ID.

  8. Selecione Salvar.

Configurar a política de autorização para extensão de tarefa personalizada com o tipo de token de segurança POP

Se o token de segurança for do tipo Prova de Posse (POP) para sua extensão de tarefa personalizada, você definirá a política de autorização seguindo estas etapas:

  1. Vá para o aplicativo lógico criado e selecione Autorização.

  2. Crie uma política de autorização com base na tabela a seguir:

    Nome da política: AzureADLifecycleWorkflowsAuthPOPAuthPolicy

    Tipo de política: AADPOP

    Declaração Valor
    Emissor https://sts.windows.net/(Tenant ID)/
    Identificador de aplicativo 00001111-AAAA-2222-BBBB-3333CCCC4444
    m PUBLICAR
    u management.azure.com
    p /subscriptions/(subscriptionId)/resourceGroups/(resourceGroupName)/providers/Microsoft.Logic/workflows/(nome do LogicApp)
  3. Salve a política de autorização.

Cuidado

Preste atenção aos detalhes, pois pequenas diferenças podem levar a problemas posteriormente.

  • Para Issuer, certifique-se de incluir a barra após sua ID de locatário
  • Em appid, verifique se a declaração personalizada é appid com todas as letras minúsculas. O valor de appid representa os fluxos de trabalho do ciclo de vida e é sempre o mesmo.

Configurar a política de autorização para extensão de tarefa personalizada com o tipo de token de segurança normal

Se o token de segurança for do tipo Normal para sua extensão de tarefa personalizada, defina a política de autorização seguindo estas etapas:

  1. Para a política de autorização dos Aplicativos Lógicos, precisamos das identidades gerenciadas ID do Aplicativo. Como o centro de administração do Microsoft Entra mostra apenas a ID do objeto, precisamos pesquisar a ID do aplicativo. Procure a identidade gerenciada pelo identificador de objeto em Aplicativos Empresariais na Central de Administração do Microsoft Entra para encontrar a ID de Aplicativo necessária.

  2. Voltar ao aplicativo lógico criado e selecione Autorização.

  3. Crie duas políticas de autorização com base nessas tabelas:

    Nome da política: AzureADLifecycleWorkflowsAuthPolicy

    Tipo de política: AAD

    Declaração Valor
    Emissor https://sts.windows.net/(Tenant ID)/
    Público ID do aplicativo da Identidade Gerenciada dos Aplicativos Lógicos
    Identificador de aplicativo 00001111-AAAA-2222-BBBB-3333CCCC4444

    Nome da política: AzureADLifecycleWorkflowsAuthPolicyV2App

    Tipo de política: AAD

    Declaração Valor
    Emissor https://login.microsoftonline.com/(Tenant ID)/v2.0
    Público ID do aplicativo da Identidade Gerenciada dos Aplicativos Lógicos
    azp ce79fdc4-cd1d-4ea5-8139-e74d7dbe0bb7
  4. Salve a política de autorização.

Cuidado

Preste atenção aos detalhes, pois pequenas diferenças podem levar a problemas posteriormente.

  • Por Issuer, certifique-se de incluir a barra após sua ID de locatário.
  • No campo Público-alvo, verifique se você está usando a ID do Aplicativo e não a ID do Objeto da sua identidade gerenciada.
  • Em appid, verifique se a declaração personalizada é appid com todas as letras minúsculas. O valor de appid representa os fluxos de trabalho do ciclo de vida e é sempre o mesmo.

Usando o Aplicativo Lógico com Fluxos de Trabalho de Ciclo de Vida

Agora que o seu aplicativo lógico está configurado para uso com Fluxos de Trabalho do Ciclo de Vida, você pode criar uma extensão de tarefa personalizada por meio da interface do usuário ou da API e usá-la em um Fluxo de Trabalho do Ciclo de Vida.

Próximas etapas