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 con estensione cpp nel progetto che contiene l'implementazione del main() metodo . Per impostazione predefinita, il nome del progetto che lo contiene è stato 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 fine del main() corpo, sotto la parentesi graffa } di chiusura dell'ultimo catch blocco e sopra return 0; (dove è stata interrotta la guida introduttiva 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-ADALToken cmdlet del modulo ADAL.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 Azure AD app registration
    $redirectUri = '<redirect-uri>'                  # Redirect URI of the Azure AD app registration
    $response = Get-ADALToken -Resource $resourceUrl -ClientId $appId -RedirectUri $redirectUri -Authority $authority -PromptBehavior:RefreshSession
    $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 $authority variabili e $resourceUrl . Devono corrispondere ai valori specificati nell'output della console nel passaggio 2.

    • Eseguire lo script di PowerShell. Il Get-ADALToken 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 l'accesso, il token di accesso verrà inserito negli Appunti.

      Visual Studio acquire token sign-in

    • 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-consenso (come descritto in "Configurazione e configurazione di MIP SDK") o si accede con un account da un tenant diverso (diverso da quello in cui è registrata l'applicazione). È sufficiente fare clic su Accetta per registrare il consenso.

      Visual Studio consent

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

    Nota

    Copiare e salvare l'ID di uno o più modelli di protezione ( ad esempio , f42a3342-8706-4288-bd31-ebb85995028z), come verrà usato nella guida introduttiva successiva.

Risoluzione dei problemi

Problemi durante l'esecuzione dell'applicazione C++

Riepilogo 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 Failed with: [class mip::P olicySyncException] Failed acquiring policy, Request failed with http status code: 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 .

Passaggi successivi

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

[Crittografa e decrittografa testo] (text-cpp.md quick-protection-encrypt-decrypt)