Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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:
- Conclua primeiro o Guia de início rápido - Inicialização do aplicativo cliente - SDK de proteção (C++), que cria uma solução inicial do Visual Studio. Este quickstart "List protection templates" baseia-se no quickstart anterior para criar corretamente a solução inicial.
- Opcional: Revise os conceitos dos modelos RMS.
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.
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++)".
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.Adicione a seguinte
usingdiretiva apósusing mip::ProtectionEngine;, perto da parte superior do arquivo:using std::endl;Perto do fim do
main()corpo, abaixo da barra}de encerramento do últimocatchbloco e acimareturn 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".
Crie um ficheiro de script PowerShell (extensão.ps1) e copie e cole o seguinte script no ficheiro:
-
$authoritye$resourceUrlsão atualizados posteriormente, na seção a seguir. - Atualize
$appIde$redirectUripara 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-
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.
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.
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:Para gerar um token de acesso para o prompt, volte para o script do PowerShell e:
Atualize as
$authorityvariáveis e$resourceUrl. Devem corresponder aos valores especificados na saída da consola no passo 2.Execute o script do PowerShell. O
Get-MsalTokencmdlet 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.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.
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:
- Consulte o exemplo do MIP Protection SDK C++ no GitHub.