Procedimentos: permitir que a aplicação de serviço funcione com o RMS baseado na nuvemHow-to: enable your service application to work with cloud based RMS

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.Versions of the Microsoft Rights Management Service SDK released prior to March 2020 are deprecated; applications using earlier versions must be updated to use the March 2020 release. Para mais detalhes, consulte o aviso de depreciação.For full details, see the deprecation notice.

Não estão previstas mais melhorias para o Microsoft Rights Management Service SDK.No further enhancements are planned for the Microsoft Rights Management Service SDK. Recomendamos vivamente a adoção do Microsoft Information Protection SDK para serviços de classificação, rotulagem e proteção.We strongly recommend adoption of the Microsoft Information Protection SDK for classification, labeling, and protection services.

Este tópico descreve os passos para configurar a aplicação do serviço para utilizar o Azure Rights Management.This topic outlines steps for setting up your service application to use Azure Rights Management. Para obter mais informações, consulte Introdução ao Azure Rights Management.For more information, see Getting started with Azure Rights Management.

ImportanteImportant
Para utilizar a aplicação de serviço SDK Rights Management Services 2.1 com o Azure RMS, terá de criar os seus inquilinos.In order to use your Rights Management Services SDK 2.1 service application with Azure RMS, you'll need to create your own tenants. Para obter mais informações, consulte Requisitos do Azure RMS: Subscrições na nuvem que suportam o Azure RMSFor more information, see Azure RMS requirements: Cloud subscriptions that support Azure RMS

Pré-requisitosPrerequisites

Ligar ao Serviço Azure Rights ManagementConnecting to the Azure Rights Management Service

  • Chame IpcInitialize.Call IpcInitialize.

  • Defina IpcSetGlobalProperty.Set IpcSetGlobalProperty.

    int mode = IPC_API_MODE_SERVER;
    IpcSetGlobalProperty(IPC_EI_API_MODE, &(mode));
    

    Nota: para obter mais informações, consulte Definir o modo de segurança de APINote For more information, see Setting the API security mode

  • 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)povoada com informações de ligação do Serviço de Gestão de Direitos Azure.The following steps are the setup for creating an instance of an IPC_PROMPT_CTX structure with the pcCredential (IPC_CREDENTIAL) member populated with connection information from the Azure Rights Management Service.

  • 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, wszBposTenantIde cbKey quando criar uma instância de uma estrutura chave _ _ SYMMETRIC _ CINGECENTIAL IPC.Use the information from your symmetric key service identity creation (see the prerequisites listed earlier in this topic) to set the wszServicePrincipal, wszBposTenantId, and cbKey parameters when you create an instance of an IPC_CREDENTIAL_SYMMETRIC_KEY structure.

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.Note - Due to an existing condition with our discovery service, if you are not in North America, symmetric key credentials are not accepted from other regions therefore, you must specify your tenant URLs directly. Isto é feito através do parâmetro pConnectionInfo, tipo IPC_CONNECTION_INFO, nas funções IpcGetTemplateList ou IpcGetTemplateIssuerList.This is done through the pConnectionInfo parameter, type IPC_CONNECTION_INFO, on functions IpcGetTemplateList or IpcGetTemplateIssuerList.

Gerar uma chave simétrica e recolher as informações necessáriasGenerate a symmetric key and collect the needed information

Instruções para gerar uma chave simétricaInstructions to generate a symmetric key

Nota: tem de ser um administrador inquilino para utilizar cmdlets do Powershell.Note - You must be a tenant administrator to use the Powershell cmdlets.

  • Inicie o Powershell e execute os seguintes comandos para gerar uma chaveStart Powershell and run the following commands to generate a key

    Import-Module MSOnline

    Connect-MsolService (introduza as credenciais de administrador)Connect-MsolService (type-in your admin credentials)

    New-MsolServicePrincipal (introduza um nome a apresentar)New-MsolServicePrincipal (type-in a display name)

  • Depois de gerar uma chave simétrica, transmitirá informações sobre a chave, incluindo a própria chave, e um AppPrincipalId.After it generates a symmetric key, it will output information about the key including the key itself and an 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 UrlsInstructions to find out TenantBposId and Urls

  • Instalar o Módulo do powershell do Azure RMS.Install Azure RMS powershell module.

  • Inicie o Powershell e execute os seguintes comandos para obter a configuração do RMS do inquilino.Start Powershell and run the following commands to get the RMS configuration of the tenant.

    Import-Module AIPService

    Connect-AipService (introduza as credenciais de administrador)Connect-AipService (type-in your admin credentials)

    Get-AipServiceConfiguration

  • Crie uma instância de uma _ _ _ chave SYMMETRIC CREDENCIAL IPC e desloque alguns membros.Create an instance of an IPC_CREDENTIAL_SYMMETRIC_KEY and set a few members.

    // 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 a _ CHAVE _ SYMMÉTRICA CREDENCIAL _ IPC.For more information see, IPC_CREDENTIAL_SYMMETRIC_KEY.

  • Crie uma instância de uma estrutura _ credencial IPC que contenha o seu caso de _ _ _ CHAVE SYMMETRIC CREDENCIAL IPC.Create an instance of an IPC_CREDENTIAL structure containing your IPC_CREDENTIAL_SYMMETRIC_KEY instance.

    Nota   - Os membros da LigaçãoInfo são definidos com URLs da chamada anterior Get-AipServiceConfiguration e anotados aqui com esses nomes de campo.Note - The connectionInfo members are set with URLs from the previous call to Get-AipServiceConfiguration and noted here with those field names.

    // 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 encriptarIdentify a template and then encrypt

  • Selecione um modelo a utilizar para a encriptação.Select a template to use for your encryption. Chamada IpcGetTemplateList passando no mesmo caso de IPC _ PROMPT _ CTX.Call IpcGetTemplateList passing in the same instance of 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 O IpcfEncrcyptFile,passando no mesmo caso de IPC _ PROMPT _ CTX.With the template from earlier in this topic, call IpcfEncrcyptFile, passing in the same instance of IPC_PROMPT_CTX.

    Utilização de exemplo de IpcfEncrcyptFile:Example use of 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:Example use of 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.You have now completed the steps needed to enable your application to use Azure Rights Management.