Guida introduttiva: Elencare i modelli di protezione (C++)

Questa guida introduttiva illustra come usare MIP Protection SDK per proteggere i modelli disponibili per l'utente.

Prerequisiti

Se non è già stato fatto, assicurarsi di completare i prerequisiti seguenti prima di continuare:

Aggiungere logica per elencare i modelli di protezione

Aggiungere la logica per elencare i modelli di protezione disponibili per un utente usando l'oggetto motore protezione.

  1. Aprire la soluzione di Visual Studio creata nell'articolo precedente "Avvio rapido - Inizializzazione dell'applicazione client - Protection SDK (C++)".

  2. Usando Esplora soluzioni aprire il file .cpp nel progetto che contiene l'implementazione del main() metodo . Per impostazione predefinita, il nome è lo stesso del progetto che lo contiene, nome che hai specificato durante la creazione del progetto.

  3. Aggiungere la direttiva seguente using dopo using mip::ProtectionEngine;, nella parte superiore del file:

    using std::endl;
    
  4. Verso la conclusione del main() corpo, sotto la parentesi graffa } di chiusura dell'ultimo catch blocco e sopra return 0; (dove è stato interrotto il Quickstart precedente), inserire il codice seguente:

     // 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;
     }
    
    

Creare uno script di PowerShell per generare token di accesso

Usare lo script di PowerShell seguente per generare i token di accesso richiesti dall'SDK nell'implementazione AuthDelegateImpl::AcquireOAuth2Token . Lo script usa il Get-MsalToken cmdlet del modulo MSAL.PS installato in precedenza, in "Configurazione e installazione di MIP SDK".

  1. Creare un file script di PowerShell (estensione.ps1) e copiare/incollare lo script seguente nel file:

    • $authority e $resourceUrl vengono aggiornati in un secondo momento, nella sezione seguente.
    • Aggiornare $appId e $redirectUri, in modo che corrispondano ai valori specificati nella registrazione dell'app 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. Salvare il file di script in modo da poterlo eseguire in un secondo momento, quando richiesto dall'applicazione client.

Compilare e testare l'applicazione

Infine, compilare e testare l'applicazione client.

  1. Usare CTRL+MAIUSC+B (Compila soluzione) per compilare l'applicazione client. Se non sono presenti errori di compilazione, usare F5 (Avvia debug) per eseguire l'applicazione.

  2. Se il progetto viene compilato ed eseguito correttamente, l'applicazione richiede un token di accesso, ogni volta che l'SDK chiama il AcquireOAuth2Token() metodo. È possibile riutilizzare un token generato in precedenza, se richiesto più volte e i valori richiesti sono gli stessi:

  3. Per generare un token di accesso per il prompt, tornare allo script di PowerShell e:

    • Aggiornare le variabili $authority e $resourceUrl. Devono corrispondere ai valori specificati nell'output della console nel passaggio 2.

    • Esegui lo script di PowerShell. Il Get-MsalToken cmdlet attiva un prompt di autenticazione di Microsoft Entra, simile all'esempio seguente. Specificare lo stesso account fornito nell'output della console nel passaggio 2. Dopo un accesso riuscito, il token di accesso verrà inserito negli appunti.

      Acquisire il token di Visual Studio per l'accesso

    • Potrebbe anche essere necessario fornire il consenso per consentire all'applicazione di accedere alle API MIP durante l'esecuzione con l'account di accesso. Ciò si verifica quando la registrazione dell'applicazione Microsoft Entra non è pre-autorizzata (come descritto in "Impostazione e configurazione di MIP SDK") o si accede con un account di un altro tenant (diverso da quello in cui l'applicazione è registrata). È sufficiente fare clic su Accetta per registrare il consenso.

      Consenso di Visual Studio

  4. Dopo aver incollato il token di accesso nel prompt del passaggio 2, l'output della console dovrebbe mostrare i modelli di protezione , come nell'esempio seguente:

    *** 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 . . .
    

    Annotazioni

    Copia e salva l'ID di uno o più modelli di protezione (ad esempio, f42a3342-8706-4288-bd31-ebb85995028z), poiché lo userai nella prossima guida introduttiva rapida.

Risoluzione dei problemi

Problemi durante l'esecuzione dell'applicazione C++

Sommario Messaggio di errore Soluzione
Token di accesso non valido Si è verificata un'eccezione... il token di accesso non è corretto/scaduto?

Chiamata API non riuscita: profile_add_engine_async non riuscita con: [class mip::PolicySyncException] Errore durante l'acquisizione della politica, richiesta non riuscita con codice di stato HTTP: 401, x-ms-diagnostics: [2000001; reason="Non è possibile analizzare il token OAuth inviato con la richiesta."; error_category="invalid_token"], correlationId:[35bc0023-3727-4eff-8062-000006d5d672]

C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (processo 29924) chiuso con codice 0.

Premere un tasto qualsiasi per chiudere questa finestra. . .
Se il progetto viene compilato correttamente, ma viene visualizzato un output simile a quello a sinistra, è probabile che nel metodo sia presente un token AcquireOAuth2Token() non valido o scaduto. Tornare a Creare uno script di PowerShell per generare token di accesso e rigenerare il token di accesso, aggiornare AcquireOAuth2Token() di nuovo e ricompilare/ripetere il servizio. È anche possibile esaminare e verificare il token e le relative attestazioni, usando l'applicazione Web a pagina singola jwt.ms .

Operazioni successive

Dopo aver appreso come elencare i modelli di protezione disponibili per un utente autenticato, provare la guida introduttiva successiva: