Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este início rápido mostra como usar o SDK da Proteção MIP para listar modelos de proteção disponíveis para o usuário.
Pré-requisitos
Conclua os seguintes pré-requisitos antes de continuar:
- Conclua Início Rápido – Inicialização do aplicativo cliente – SDK de proteção (C++) primeiro, para criar uma solução inicial do Visual Studio. Este guia de início rápido "Listar modelos de proteção" baseia-se no início rápido anterior para criar corretamente a solução inicial.
- Opcional: examine os conceitos de modelos do RMS .
Adicionar lógica para listar os modelos de proteção
Adicione lógica para listar modelos de proteção disponíveis para um usuário usando o objeto do mecanismo de proteção.
Abra a solução do Visual Studio que você criou no artigo anterior "Início Rápido – Inicialização do aplicativo cliente – SDK de Proteção (C++)".
Em Gerenciador de Soluções, abra o arquivo .cpp em seu projeto que contém a implementação do
main()método. Ele usa como padrão o mesmo nome do projeto que o contém, que você especificou durante a criação do projeto.Adicione a seguinte
usingdiretiva depoisusing mip::ProtectionEngine;, perto da parte superior do arquivo:using std::endl;No final do
main()corpo, abaixo da chave}de fechamento do últimocatchbloco e acimareturn 0;(onde você parou no início rápido 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 script do PowerShell a seguir para gerar tokens de acesso que o SDK solicita em sua AuthDelegateImpl::AcquireOAuth2Token implementação. O script usa o cmdlet Get-MsalToken do módulo MSAL.PS que você instalou anteriormente, em "Instalação e configuração do SDK do MIP".
Crie um arquivo de script do PowerShell ( extensão.ps1) e copie e cole o seguinte script no arquivo:
-
$authoritye$resourceUrlsão atualizados posteriormente, na seção a seguir. - Atualize
$appIde$redirectUripara corresponder aos valores especificados no registro do seu aplicativo no 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 aplicativo cliente.
Criar e testar o aplicativo
Crie e teste seu aplicativo cliente.
Use Ctrl+Shift+B (Build Solution) para criar seu aplicativo cliente. Se o build não tiver erros, use F5 (Iniciar depuração) para executar seu aplicativo.
Se o projeto for compilado e executado com êxito, o aplicativo solicitará um token de acesso sempre que o SDK chamar seu
AcquireOAuth2Token()método. Você pode reutilizar um token gerado anteriormente se solicitado várias vezes e os valores solicitados são os mesmos:Para gerar um token de acesso para o prompt, volte para o script do PowerShell e:
Atualize as variáveis
$authoritye$resourceUrl. Eles devem corresponder aos valores especificados na saída do console na etapa 2.Execute o script do PowerShell. O
Get-MsalTokencmdlet dispara um prompt de autenticação Microsoft Entra, semelhante ao exemplo a seguir. Especifique a mesma conta fornecida na saída do console na etapa 2. Após a entrada bem-sucedida, o PowerShell coloca o token de acesso na área de transferência.Talvez você também precise conceder consentimento para permitir que o aplicativo acesse as APIs do MIP enquanto estiver em execução na conta usada para fazer login. Isso acontece quando o registro de aplicativo do Microsoft Entra não é pré-consentido (conforme descrito em "Configuração e configuração do SDK do MIP"), ou você está entrando com uma conta de um locatário diferente (diferente daquela em que seu aplicativo está registrado). Selecione Aceitar para registrar seu consentimento.
Depois de colar o token de acesso no prompt da etapa 2, a saída do console deverá mostrar os modelos de proteção, semelhantes ao exemplo a seguir:
*** 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 salve o ID de um ou mais modelos de proteção (por exemplo,
f42a3342-8706-4288-bd31-ebb85995028z) para usar no próximo início rápido.
Resoluçã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 da API: profile_add_engine_async falhou com: [classe mip::PolicySyncException] Falha ao obter a política, a solicitação falhou com o código de status HTTP: 401, x-ms-diagnostics: [2000001;reason="O token OAuth enviado com a solicitação 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) foi encerrado com o código 0. Pressione qualquer tecla para fechar esta janela. . . |
Se o projeto foi compilado com sucesso, mas você viu uma saída semelhante à da esquerda, provavelmente você tem um token inválido ou expirado em seu método AcquireOAuth2Token(). Volte para Criar um script do PowerShell para gerar tokens de acesso e regenerar o token de acesso, atualizar AcquireOAuth2Token() novamente e recompilar/retestir. Você também pode examinar e verificar o token e suas declarações, usando o jwt.ms aplicativo Web de página única. |
Próximas Etapas
Agora que você aprendeu a listar os modelos de proteção disponíveis para um usuário autenticado, experimente o próximo início rápido:
- Explore o exemplo em C++ do SDK do MIP Protection no GitHub.