Quickstart: Modelos de proteção de listas (C++)

Este quickstart mostra-lhe como usar o MIP Protection SDK para listar modelos de proteção disponíveis para o utilizador.

Pré-requisitos

Preencha os seguintes pré-requisitos antes de continuar:

Adicionar lógica para listar os modelos de proteção

Adicionar lógica a modelos de proteção de listas disponíveis para um utilizador usando o objeto do motor de proteção.

  1. Abra a solução Visual Studio que você criou no artigo anterior "Guia de início rápido - inicialização do aplicativo cliente - SDK de proteção (C++)".

  2. No Explorador de Soluções, abra o ficheiro .cpp no seu projeto que contém a implementação do main() método. Por padrão, é atribuído o mesmo nome do projeto que o acolhe, que você especificou durante a criação do projeto.

  3. Adicione a seguinte using diretiva após using mip::ProtectionEngine;, perto da parte superior do arquivo:

    using std::endl;
    
  4. Perto do fim do main() corpo, abaixo da barra } de encerramento do último catch bloco e acima return 0; (onde ficou no quickstart anterior), insira o seguinte código:

     // List protection templates
     const shared_ptr<ProtectionEngineObserver> engineObserver = std::make_shared<ProtectionEngineObserver>();
     // Create a context to pass to 'ProtectionEngine::GetTemplateListAsync'. That context will be forwarded to the
     // corresponding ProtectionEngine::Observer methods. In this case, we use promises/futures as a simple way to detect
     // the async operation completes synchronously.
     auto loadPromise = std::make_shared<std::promise<vector<shared_ptr<mip::TemplateDescriptor>>>>();
     std::future<vector<shared_ptr<mip::TemplateDescriptor>>> loadFuture = loadPromise->get_future();
     engine->GetTemplatesAsync(engineObserver, loadPromise);
     auto templates = loadFuture.get();
    
     cout << "*** Template List: " << endl;
    
     for (const auto& protectionTemplate : templates) {
         cout << "Name: " << protectionTemplate->GetName() << " : " << protectionTemplate->GetId() << endl;
     }
    
    

Criar um script do PowerShell para gerar tokens de acesso

Use o seguinte script PowerShell para gerar tokens de acesso que o SDK solicita na sua AuthDelegateImpl::AcquireOAuth2Token implementação. O script usa o Get-MsalToken cmdlet do módulo MSAL.PS que instalaste anteriormente, em "MIP SDK setup and configuration".

  1. Crie um ficheiro de script PowerShell (extensão.ps1) e copie e cole o seguinte script no ficheiro:

    • $authority e $resourceUrl são atualizados posteriormente, na seção a seguir.
    • Atualize $appId e $redirectUri para corresponderem aos valores que especificou no registo de aplicação do Microsoft Entra.
    $authority = '<authority-url>'                   # Specified when SDK calls AcquireOAuth2Token()
    $resourceUrl = '<resource-url>'                  # Specified when SDK calls AcquireOAuth2Token()
    $appId = '<app-ID>'                              # App ID of the Microsoft Entra app registration
    $redirectUri = '<redirect-uri>'                  # Redirect URI of the Microsoft Entra app registration
    $scope = $resourceUrl + "/.default"
    $response = Get-MsalToken -ClientId $appId -Authority $authority -RedirectUri $redirectUri -Scopes $scope -Interactive
    $response.AccessToken | clip                     # Copy the access token text to the clipboard
    
  2. Salve o arquivo de script para que você possa executá-lo mais tarde, quando solicitado pelo seu aplicativo cliente.

Crie e teste o aplicativo

Crie e teste seu aplicativo cliente.

  1. Use Ctrl+Shift+B (Build Solution) para criar seu aplicativo cliente. Se a compilação não tiver erros, use F5 (Iniciar depuração) para executar a sua aplicação.

  2. Se o seu projeto for construído e executado com sucesso, a aplicação solicita um token de acesso sempre que o SDK chama o seu AcquireOAuth2Token() método. Pode reutilizar um token previamente gerado se for solicitado várias vezes e os valores solicitados forem os mesmos:

  3. Para gerar um token de acesso para o prompt, volte para o script do PowerShell e:

    • Atualize as $authority variáveis e $resourceUrl . Devem corresponder aos valores especificados na saída da consola no passo 2.

    • Execute o script do PowerShell. O Get-MsalToken cmdlet dispara um prompt de autenticação Microsoft Entra, semelhante ao exemplo seguinte. Especifique a mesma conta fornecida na saída da consola no passo 2. Após o início de sessão bem-sucedido, o PowerShell coloca o token de acesso na prancheta.

      O Visual Studio adquire login de token.

    • Também poderá precisar de dar consentimento para permitir que a aplicação aceda às APIs MIP enquanto está a correr na conta de login. Isso acontece quando o registro do aplicativo Microsoft Entra não é pré-consentido (conforme descrito em "Instalação e configuração do MIP SDK") ou quando você está entrando com uma conta de um locatário diferente (diferente daquele em que seu aplicativo está registrado). Selecione Aceitar para registar o seu consentimento.

      Consentimento do Visual Studio.

  4. Depois de colar o token de acesso no prompt do passo 2, a saída da consola deve mostrar os modelos de proteção, semelhante ao seguinte exemplo:

    *** Template List:
    Name: Confidential \ All Employees : a74f5027-f3e3-4c55-abcd-74c2ee41b607
    Name: Highly Confidential \ All Employees : bb7ed207-046a-4caf-9826-647cff56b990
    Name: Confidential : 174bc02a-6e22-4cf2-9309-cb3d47142b05
    Name: Contoso Employees Only : 667466bf-a01b-4b0a-8bbf-a79a3d96f720
    
    C:\MIP Sample Apps\ProtectionQS\Debug\ProtectionQS.exe (process 8252) exited with code 0.
    To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stops.
    
    Press any key to continue . . .
    

    Observação

    Copie e guarde o ID de um ou vários modelos de proteção (por exemplo, f42a3342-8706-4288-bd31-ebb85995028z), para o utilizar no próximo início rápido.

Solução de problemas

Problemas durante a execução do aplicativo C++

Resumo Mensagem de erro Solução
Token de acesso incorreto Ocorreu uma exceção... O token de acesso está incorreto/expirado?

Falha na chamada à API: profile_add_engine_async Falhou com: [class mip::PolicySyncException] Falha ao obter a política, O pedido falhou com o código de estado HTTP: 401, x-ms-diagnostics: [2000001;reason="o token OAuth enviado com o pedido não pode ser analisado.";error_category="invalid_token"], correlationId:[aaaa0000-bb11-2222-33cc-444444dddddd]'

C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (processo 29924) saiu com o código 0.

Pressione qualquer tecla para fechar esta janela . . .
Se o teu projeto for compilado com êxito, mas surgir um resultado semelhante ao da esquerda, é provável que exista um token inválido ou expirado no teu método AcquireOAuth2Token(). Volte para Criar um script do PowerShell para gerar tokens de acesso, regenere o token de acesso, atualize AcquireOAuth2Token() novamente e reconstrua/teste. Você também pode examinar e verificar o token e suas declarações, usando o jwt.ms aplicativo Web de página única.

Passos seguintes

Agora que você aprendeu como listar os modelos de proteção disponíveis para um usuário autenticado, tente o próximo início rápido: