Comment : permettre à votre application de service de fonctionner avec le service RMS cloud

Important

Les versions du Kit de développement logiciel (SDK) du service Microsoft Rights Management publiées avant mars 2020 sont déconseillées ; les applications utilisant des versions antérieures doivent être mises à jour pour utiliser la version de mars 2020. Pour plus d’informations, consultez l’avis de dépréciation.

Aucune autre amélioration n’est prévue pour le Kit de développement logiciel (SDK) du service Microsoft Rights Management. Nous vous recommandons vivement d’adopter le KIT de développement logiciel (SDK) Protection des données Microsoft pour les services de classification, d’étiquetage et de protection.

Cette rubrique décrit les étapes qui permettent de configurer votre application de service pour qu’elle utilise Azure Rights Management. Pour plus d’informations, consultez Prise en main d’Azure Rights Management.

Important
Pour utiliser votre application de service de Rights Management Services SDK 2.1 avec Azure RMS, vous devez créer vos propres locataires. Pour plus d’informations, consultez les exigences d’Azure RMS : Abonnements cloud qui prennent en charge Azure RMS

Prérequis

Connexion au service Rights Management Azure

  • Appelez IpcInitialize.

  • Définissez IpcSetGlobalProperty.

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

    Note Pour plus d’informations, consultez Définition du mode de sécurité de l’API

  • Les étapes suivantes sont la configuration permettant de créer une instance d’une structure IPC_PROMPT_CTX avec le membre pcCredential (IPC_CREDENTIAL) rempli avec les informations de connexion du service Azure Rights Management.

  • Utilisez les informations de la création de votre identité de service à clé symétrique (consultez les conditions préalables répertoriées précédemment dans cette rubrique) pour définir les paramètres wszServicePrincipal, wszBposTenantId et cbKey lorsque vous créez une instance d’une structure IPC_CREDENTIAL_SYMMETRIC_KEY .

Remarque : En raison d’une condition existante avec notre service de découverte, si vous n’êtes pas en Amérique du Nord, les informations d’identification de clé symétrique des autres régions ne sont pas acceptées. Vous devez donc spécifier les URL des locataires directement. Pour ce faire, utilisez le paramètre pConnectionInfo , tapez IPC_CONNECTION_INFO, sur les fonctions IpcGetTemplateList ou IpcGetTemplateIssuerList.

Générer une clé symétrique et recueillir les informations nécessaires

Instructions pour générer une clé symétrique

Remarque : Vous devez être un administrateur client pour utiliser les applets de commande Powershell.

  • Démarrez Powershell et exécutez les commandes suivantes pour générer une clé.

    Import-Module MSOnline

    Connect-MsolService(entrez vos informations d’identification d’administrateur)

    New-MsolServicePrincipal(entrez un nom d’affichage)

  • Une fois la clé symétrique générée, les informations sur la clé sont transmises, notamment la clé elle-même et 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
    

Instructions pour trouver TenantBposId et les Urls

  • Installez le Module Powershell Azure RMS.

  • Démarrez Powershell et exécutez les commandes suivantes pour obtenir la configuration RMS du locataire.

    Import-Module AIPService

    Connect-AipService(entrez vos informations d’identification d’administrateur)

    Get-AipServiceConfiguration

  • Créez une instance d’un IPC_CREDENTIAL_SYMMETRIC_KEY et définissez quelques membres.

    // 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";
    

Pour plus d’informations, consultez IPC_CREDENTIAL_SYMMETRIC_KEY.

  • Créez une instance d’une structure IPC_CREDENTIAL contenant votre instance de IPC_CREDENTIAL_SYMMETRIC_KEY .

    Remarque : Les membres de connectionInfo sont définis avec des URL obtenues à partir de l’appel précédent à Get-AipServiceConfiguration et notées ici avec ces noms de champs.

    // 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;
    

Identifier un modèle, puis procéder au chiffrement

  • Sélectionnez un modèle à utiliser pour le chiffrement. Appelez IpcGetTemplateList en passant la même instance 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);
    
  • Avec le modèle créé précédemment dans cette rubrique, appelez IpcfEncrcyptFile, en passant la même instance de IPC_PROMPT_CTX.

    Exemple d’utilisation 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);
    

    Exemple d’utilisation de IpcfDecryptFile :

    hr = IpcfDecryptFile(wszInputFilePath,
           IPCF_DF_FLAG_DEFAULT,
           &promptCtx,
           NULL,
           &wszOutputFilePath);
    

Vous avez maintenant terminé les étapes nécessaires pour permettre à votre application d’utiliser Azure Rights Management.