Nasıl yapılır: Hizmet uygulamanızın bulut tabanlı RMS ile çalışmasını sağlama

Önemli

Mart 2020'den önce yayımlanan Microsoft Rights Management Service SDK sürümleri kullanım dışı bırakılmıştır; önceki sürümleri kullanan uygulamaların Mart 2020 sürümünü kullanacak şekilde güncelleştirilmiş olması gerekir. Tüm ayrıntılar için kullanımdan kaldırma bildirimine bakın.

Microsoft Rights Management Service SDK'sı için başka geliştirme planlanmıyor. Sınıflandırma, etiketleme ve koruma hizmetleri için Microsoft Bilgi Koruması SDK'sının benimsenmesini kesinlikle öneririz.

Bu konuda hizmet uygulamanızı Azure Rights Management’ı kullanacak şekilde ayarlama adımları açıklanmaktadır. Daha fazla bilgi edinmek için bkz. Azure Rights Management’ı Kullanmaya Başlama.

Önemli
Rights Management Services SDK 2.1 hizmet uygulamanızı Azure RMS ile kullanabilmeniz için kendi kiracılarınızı oluşturmanız gerekir. Daha fazla bilgi için bkz . Azure RMS gereksinimleri: Azure RMS'yi destekleyen bulut abonelikleri

Önkoşullar

Azure Rights Management Hizmetine Bağlanma

  • IpcInitialize’ı çağırın.

  • IpcSetGlobalProperty’yi ayarlayın.

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

    Not Daha fazla bilgi için bkz . API güvenlik modunu ayarlama

  • Aşağıdaki adımlar, Azure Rights Management Service'ten alınan bağlantı bilgileriyle doldurulmuş pcCredential (IPC_CREDENTIAL) üyesiyle bir IPC_PROMPT_CTX yapısının örneğini oluşturmaya yönelik kurulumlardır.

  • IPC_CREDENTIAL_SYMMETRIC_KEY yapısının bir örneğini oluştururken wszServicePrincipal, wszBposTenantId ve cbKey parametrelerini ayarlamak için simetrik anahtar hizmet kimliği oluşturma işleminizdeki bilgileri kullanın (bu konuda daha önce listelenen önkoşullara bakın).

Not - Bulma hizmetimizdeki bir koşul nedeniyle, diğer bölgelerden simetrik anahtar kimlik bilgileri kabul edilemediğinden Kuzey Amerika’da değilseniz kiracı URL’nizi doğrudan belirtmelisiniz. Bu işlem pConnectionInfo parametresi, IpcGetTemplateList veya IpcGetTemplateIssuerList işlevlerine IPC_CONNECTION_INFO yazın.

Simetrik anahtarı oluşturma ve gerekli bilgileri toplama

Simetrik anahtar oluşturma yönergeleri

Not - Powershell cmdlet'lerini kullanmak için kiracı yöneticisi olmanız gerekir.

  • PowerShell'i başlatın ve bir anahtar oluşturmak için aşağıdaki komutları çalıştırın

    Import-Module MSOnline

    Connect-MsolService (yönetici kimlik bilgilerinizi yazın)

    New-MsolServicePrincipal (görünen ad yazın)

  • Komut, bir simetrik anahtar oluşturduktan sonra anahtar hakkında, anahtarın kendisini ve bir AppPrincipalId içeren bilgileri çıkarır.

    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
    

TenantBposId ve Urls öğrenme yönergeleri

  • Azure RMS Powershell modülünü yükleyin.

  • PowerShell'i başlatın ve kiracının RMS yapılandırmasını almak için aşağıdaki komutları çalıştırın.

    Import-Module AIPService

    Connect-AipService (yönetici kimlik bilgilerinizi yazın)

    Get-AipServiceConfiguration

  • bir IPC_CREDENTIAL_SYMMETRIC_KEY örneği oluşturun ve birkaç üye ayarlayın.

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

Daha fazla bilgi için bkz. IPC_CREDENTIAL_SYMMETRIC_KEY.

  • IPC_CREDENTIAL_SYMMETRIC_KEY örneğinizi içeren bir IPC_CREDENTIAL yapısının örneğini oluşturun.

    Not - connectionInfo üyeleri önceki Get-AipServiceConfiguration çağrısından alınan URL'lerle ayarlanır ve bu alan adlarıyla buraya kaydedilir.

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

Şablonu belirleyin ve şifreleyin

  • Şifrelemeniz için kullanılacak bir şablon seçin aynı IPC_PROMPT_CTXörneğini geçirerek IpcGetTemplateList öğesini çağırın.

    PCIPC_TIL pTemplates = NULL;
    IPC_TEMPLATE_ISSUER templateIssuer = (pTemplateIssuerList->aTi)[0];
    
    hr = IpcGetTemplateList(&(templateIssuer.connectionInfo),
           IPC_GTL_FLAG_FORCE_DOWNLOAD,
           0,
           &promptCtx,
           NULL,
           &pTemplates);
    
  • Bu konunun önceki bölümlerinde yer alan şablonla, aynı IPC_PROMPT_CTX örneğini geçirerek IpcfEncrcyptFile'ı çağırın.

    IpcfEncrcyptFile kullanımı örneği:

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

    IpcfDecryptFile kullanımı örneği:

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

Artık, uygulamanızı Azure Rights Management’ı kullanmak üzere etkinleştirmek için gerekli adımları tamamladınız.