Procedimentos: permitir que a aplicação de serviço funcione com o RMS baseado na nuvem
Importante
As versões do Microsoft Rights Management Service SDK lançadas antes de março de 2020 são depreciadas; as aplicações que utilizam versões anteriores devem ser atualizadas para utilizar a versão de março de 2020. Para mais detalhes, consulte o aviso de depreciação.
Não estão previstas mais melhorias para o Microsoft Rights Management Service SDK. Recomendamos vivamente a adoção do Proteção de Informações da Microsoft SDK para serviços de classificação, rotulagem e proteção.
Este tópico descreve os passos para configurar a aplicação do serviço para utilizar o Azure Rights Management. Para obter mais informações, consulte Introdução ao Azure Rights Management.
Importante
Para utilizar a aplicação de serviço SDK Rights Management Services 2.1 com o Azure RMS, terá de criar os seus inquilinos. Para obter mais informações, consulte Requisitos do Azure RMS: Subscrições na nuvem que suportam o Azure RMS
Pré-requisitos
- O SDK RMS 2.1 tem de estar instalado e configurado. Para obter mais informações, consulte Introdução ao SDK RMS 2.1.
- Tem de criar uma identidade do serviço através do ACS ao utilizar a opção de chave simétrica ou através de outros meios e registar as informações da chave a partir desse processo.
Ligar ao Serviço Azure Rights Management
Chame IpcInitialize.
Defina IpcSetGlobalProperty.
int mode = IPC_API_MODE_SERVER; IpcSetGlobalProperty(IPC_EI_API_MODE, &(mode));
Nota Para obter mais informações, consulte definição do modo de segurança API
Os seguintes passos são a configuração para a criação de uma instância de uma estrutura IPC_PROMPT_CTX com o membro do pcCredential (IPC_CREDENTIAL) povoado com informações de ligação do Serviço de Gestão de Direitos Azure.
Utilize as informações da criação de identidade de serviço chave simétrica (consulte os pré-requisitos listados anteriormente neste tópico) para definir os parâmetros wszServicePrincipal, wszBposTenantId e cbKey quando criar uma instância de uma estrutura IPC_CREDENTIAL_SYMMETRIC_KEY .
Nota: devido a uma condição existente no nosso serviço de deteção, se não estiver na América do Norte, as credenciais da chave simétrica não serão aceites a partir de outras regiões; como tal, tem de especificar os URLs do inquilino diretamente. Isto é feito através do parâmetro pConnectionInfo , tipo IPC_CONNECTION_INFO, nas funções IpcGetTemplateList ou IpcGetTemplateIssuerList.
Gerar uma chave simétrica e recolher as informações necessárias
Instruções para gerar uma chave simétrica
- Instalar o Assistente de Início de Sessão Online da Microsoft
- Instalar o Módulo do Powershell do Azure AD.
Nota: tem de ser um administrador inquilino para utilizar cmdlets do Powershell.
Inicie o Powershell e execute os seguintes comandos para gerar uma chave
Import-Module MSOnline
Connect-MsolService
(introduza as credenciais de administrador)New-MsolServicePrincipal
(introduza um nome a apresentar)Depois de gerar uma chave simétrica, transmitirá informações sobre a chave, incluindo a própria chave, e um AppPrincipalId.
The following symmetric key was created as one was not supplied ZYbF/lTtwE28qplQofCpi2syWd11D83+A3DRlb2Jnv8= DisplayName : RMSTestApp ServicePrincipalNames : {7d9c1f38-600c-4b4d-8249-22427f016963} ObjectId : 0ee53770-ec86-409e-8939-6d8239880518 AppPrincipalId : 7d9c1f38-600c-4b4d-8249-22427f016963
Instruções para descobrir TenantBposId e Urls
Instalar o Módulo do powershell do Azure RMS.
Inicie o Powershell e execute os seguintes comandos para obter a configuração do RMS do inquilino.
Import-Module AIPService
Connect-AipService
(introduza as credenciais de administrador)Get-AipServiceConfiguration
Crie um exemplo de IPC_CREDENTIAL_SYMMETRIC_KEY e desemalte alguns membros.
// Create a key structure. IPC_CREDENTIAL_SYMMETRIC_KEY symKey = {0}; // Set each member with information from service creation. symKey.wszBase64Key = "your service principal key"; symKey.wszAppPrincipalId = "your app principal identifier"; symKey.wszBposTenantId = "your tenant identifier";
Para mais informações consulte, IPC_CREDENTIAL_SYMMETRIC_KEY.
Crie uma instância de uma estrutura IPC_CREDENTIAL que contenha a sua IPC_CREDENTIAL_SYMMETRIC_KEY instância.
Nota: os membros connectionInfo são definidos com URLs a partir da chamada anterior para
Get-AipServiceConfiguration
e são indicados aqui com esses nomes de campo.// Create a credential structure. IPC_CREDENTIAL cred = {0}; IPC_CONNECTION_INFO connectionInfo = {0}; connectionInfo.wszIntranetUrl = LicensingIntranetDistributionPointUrl; connectionInfo.wszExtranetUrl = LicensingExtranetDistributionPointUrl; // Set each member. cred.dwType = IPC_CREDENTIAL_TYPE_SYMMETRIC_KEY; cred.pcCertContext = (PCCERT_CONTEXT)&symKey; // Create your prompt control. IPC_PROMPT_CTX promptCtx = {0}; // Set each member. promptCtx.cbSize = sizeof(IPC_PROMPT_CTX); promptCtx.hwndParent = NULL; promptCtx.dwflags = IPC_PROMPT_FLAG_SILENT; promptCtx.hCancelEvent = NULL; promptCtx.pcCredential = &cred;
Identificar um modelo e encriptar
Selecione um modelo a utilizar para a encriptação. Ligue para ipcGetTemplateList passando no mesmo caso de IPC_PROMPT_CTX.
PCIPC_TIL pTemplates = NULL; IPC_TEMPLATE_ISSUER templateIssuer = (pTemplateIssuerList->aTi)[0]; hr = IpcGetTemplateList(&(templateIssuer.connectionInfo), IPC_GTL_FLAG_FORCE_DOWNLOAD, 0, &promptCtx, NULL, &pTemplates);
Com o modelo de anterior neste tópico, ligue para IpcfEncrcyptFile, passando no mesmo caso de IPC_PROMPT_CTX.
Utilização de exemplo de IpcfEncrcyptFile:
LPCWSTR wszContentTemplateId = pTemplates->aTi[0].wszID; hr = IpcfEncryptFile(wszInputFilePath, wszContentTemplateId, IPCF_EF_TEMPLATE_ID, IPC_EF_FLAG_KEY_NO_PERSIST, &promptCtx, NULL, &wszOutputFilePath);
Utilização de exemplo de IpcfDecryptFile:
hr = IpcfDecryptFile(wszInputFilePath, IPCF_DF_FLAG_DEFAULT, &promptCtx, NULL, &wszOutputFilePath);
Concluiu os passos necessários para permitir que a sua aplicação utilize o Azure Rights Management.
Tópicos relacionados
- Introdução ao Azure Rights Management
- Introdução ao SDK RMS 2.1
- Criar uma identidade do serviço através do ACS
- IpcSetGlobalProperty
- IpcInitializar
- IPC_PROMPT_CTX
- IPC_CREDENTIAL
- IPC_CREDENTIAL_SYMMETRIC_KEY
- IpcGetTemplateIssuerList
- IpcGetTemplateList
- IpcfDecryptFile
- IpcfEncrcyptFile
- IpcCreateLicenseFromScratch
- IpcCreateLicenseFromTemplateID