方法: クラウド ベース RMS でのサービス アプリケーション使用の有効化

このトピックでは、Azure Rights Management を使用するようにサービス アプリケーションをセットアップする手順について説明します。 詳細については、「Azure Rights Management の概要」を参照してください。

重要
Rights Management Services SDK 2.1 サービスを Azure RMS で利用するには、独自のテナントを作成する必要があります。 詳細については、「Azure RMS の要件: Azure RMS をサポートするクラウド サブスクリプション」を参照してください。

必要条件

Azure Rights Management サービスへの接続

  • IpcInitialize を呼び出します。
  • IpcSetGlobalProperty を設定します。

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

詳細については、「Setting the API security mode (API セキュリティ モードの設定)」を参照してください。

  • 次の手順は、IPC_PROMPT_CTX 構造体のインスタンスを作成するためのセットアップです。pcCredential (IPC_CREDENTIAL) メンバーに Azure Rights Management サービスの接続情報を設定します。
  • 対称キーのサービス ID 作成時にメモした情報 (このトピックの前述の前提条件を参照してください) を使用して、IPC_CREDENTIAL_SYMMETRIC_KEY 構造体のインスタンスを作成するときに wszServicePrincipalwszBposTenantIdcbKey パラメーターを設定します。

- 探索サービスの既存の条件により、北米以外の地域では、対称キーの資格情報が他の地域から受け入れられないため、テナント URL を直接指定する必要があります。 これを行うには、pConnectionInfo パラメーターの IpcGetTemplateList または IpcGetTemplateIssuerListIPC_CONNECTION_INFO を入力します。

対称キーの生成と必要な情報の収集

対称キーを生成する手順

- Powershell コマンドレットを使用するには、テナントの管理者でなければなりません。

  • Powershell を起動し、次のコマンドを実行してキーを生成します。

    Import-Module MSOnline

    Connect-MsolService (管理者の資格情報を入力します)

    New-MsolServicePrincipal (表示名を入力します)

  • 対称キーの生成後、キー自体と 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
    

TenantBposIdURL を調べる手順

  • Azure RMS PowerShell モジュールをインストールします。
  • Powershell を起動し、次のコマンドを実行してテナントの RMS 構成を取得します。

    Import-Module aadrm

    Connect-AadrmService (管理者の資格情報を入力します)

    Get-AadrmConfiguration

  • IPC_CREDENTIAL_SYMMETRIC_KEY のインスタンスを作成して、いくつかのメンバーを設定します。

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

詳細については、「IPC_CREDENTIAL_SYMMETRIC_KEY」を参照してください。

- connectionInfo メンバーには、直前に Get-AadrmConfiguration を呼び出したときの URL が設定され、ここではそのフィールド名を示します。

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

テンプレートの識別と暗号化

  • 暗号化に使用するテンプレートを選択します IpcGetTemplateList を呼び出して、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);
  • このトピック前半のテンプレートを使用して、IpcfEncrcyptFile を呼び出して、IPC_PROMPT_CTX の同じインスタンスに渡します。

IpcfEncrcyptFile の使用例:

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

IpcfDecryptFile の使用例:

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

アプリケーションでの Azure Rights Management 使用の有効化に必要な手順が完了しました。

関連項目

コメント

コメントを投稿する前に、内部ルールを参照してください。