Udostępnij za pośrednictwem


Instrukcje: umożliwianie współdziałania aplikacji usługi z usługą RMS opartą na chmurze

Ważne

Wersje zestawu Microsoft Rights Management Service SDK wydane przed marcem 2020 r. są przestarzałe; w celu korzystania z wersji z marca 2020 r. należy zaktualizować aplikacje korzystające z wcześniejszych wersji. Aby uzyskać szczegółowe informacje, zobacz powiadomienie o wycofaniu.

Nie planuje się dalszych ulepszeń zestawu Microsoft Rights Management Service SDK. Zdecydowanie zalecamy wdrożenie zestawu SDK Microsoft Information Protection dla usług klasyfikacji, etykietowania i ochrony.

W tym temacie opisano kroki konfigurowania aplikacji usługi do korzystania z usługi Azure Rights Management. Aby uzyskać więcej informacji, zobacz Rozpoczynanie pracy z usługą Azure Rights Management.

Ważne
Aby móc użyć aplikacji usługi zestawu Rights Management Services SDK 2.1 z usługą Azure RMS, musisz utworzyć własne dzierżawy. Aby uzyskać więcej informacji, zobacz Wymagania dotyczące usługi Azure RMS: subskrypcje w chmurze, które obsługują usługę Azure RMS

Wymagania wstępne

Łączenie z usługą Azure Rights Management

  • Wywołaj metodę IpcInitialize.

  • Ustaw właściwość IpcSetGlobalProperty.

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

    Uwaga Aby uzyskać więcej informacji, zobacz Ustawianie trybu zabezpieczeń interfejsu API

  • Poniższe kroki to konfiguracja tworzenia wystąpienia struktury IPC_PROMPT_CTX z elementem członkowskim pcCredential (IPC_CREDENTIAL) wypełnionym informacjami o połączeniu z usługi Azure Rights Management.

  • Użyj informacji z tworzenia tożsamości usługi klucza symetrycznego (zobacz wymagania wstępne wymienione wcześniej w tym temacie), aby ustawić parametry wszServicePrincipal, wszBposTenantId i cbKey podczas tworzenia wystąpienia struktury IPC_CREDENTIAL_SYMMETRIC_KEY .

Uwaga: Ze względu na stan naszej usługi odnajdywania, jeśli nie znajdujesz się w Ameryce Północnej, nie są akceptowane poświadczenia kluczy symetrycznych z innych regionów, w związku z czym należy bezpośrednio określić adresy URL dzierżawy. Odbywa się to za pomocą parametru pConnectionInfo, typu IPC_CONNECTION_INFO, w funkcjach IpcGetTemplateList lub IpcGetTemplateIssuerList.

Generowanie klucza symetrycznego i zbieranie potrzebnych informacji

Instrukcje generowania klucza symetrycznego

Uwaga: Tylko administrator dzierżawy może korzystać z poleceń cmdlet modułu Powershell.

  • Uruchom program Powershell i uruchom następujące polecenia, aby wygenerować klucz

    Import-Module MSOnline

    Connect-MsolService (wpisz swoje poświadczenia administratora)

    New-MsolServicePrincipal (wpisz nazwę wyświetlaną)

  • Po wygenerowaniu klucza symetrycznego wyświetlane są informacje na temat klucza, w tym sam klucz i element 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
    

Instrukcje określania wartości TenantBposId i Urls

  • Zainstaluj moduł PowerShell usługi Azure RMS.

  • Uruchom program Powershell i uruchom następujące polecenia, aby uzyskać konfigurację usługi RMS dzierżawy.

    Import-Module AIPService

    Connect-AipService (wpisz swoje poświadczenia administratora)

    Get-AipServiceConfiguration

  • Utwórz wystąpienie IPC_CREDENTIAL_SYMMETRIC_KEY i ustaw kilka elementów członkowskich.

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

Aby uzyskać więcej informacji, zobacz IPC_CREDENTIAL_SYMMETRIC_KEY.

  • Utwórz wystąpienie struktury IPC_CREDENTIAL zawierającej wystąpienie IPC_CREDENTIAL_SYMMETRIC_KEY .

    Uwaga: Elementy członkowskie connectionInfo są konfigurowane przy użyciu adresów URL z poprzedniego wywołania elementu Get-AipServiceConfiguration i oznaczane w tym miejscu przy użyciu tych nazw pól.

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

Zidentyfikuj szablon i zaszyfruj go

  • Wybierz szablon do użycia dla szyfrowania. Wywołaj metodę IpcGetTemplateList przekazującą to samo wystąpienie 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);
    
  • Przy użyciu szablonu z wcześniejszej części tego tematu wywołaj metodę IpcfEncrcyptFile, przekazując to samo wystąpienie IPC_PROMPT_CTX.

    Przykładowe zastosowanie wywołania elementu IpcfEncrcyptFile:

    LPCWSTR wszContentTemplateId = pTemplates->aTi[0].wszID;
    hr = IpcfEncryptFile(wszInputFilePath,
           wszContentTemplateId,
           IPCF_EF_TEMPLATE_ID,
           IPC_EF_FLAG_KEY_NO_PERSIST,
           &promptCtx,
           NULL,
           &wszOutputFilePath);
    

    Przykładowe zastosowanie wywołania elementu IpcfDecryptFile:

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

Ukończono kroki niezbędne do włączenia obsługi usługi Azure Rights Management przez aplikację.