Vývoj aplikaceDeveloping your application

V tomto příkladu vytvoříte jednoduchou konzolovou aplikaci, která spolupracuje se službou Azure Information Protection (AIP).In this example you are going to build a simple console application that interacts with the Azure Information Protection service (AIP). Aplikace nabídne ochranu dokumentu pomocí zásad ad hoc nebo šablony Azure a pak převezme jako vstupní parametr cestu k dokumentu, který chcete chránit.It will take as input the path of a document to protect, then protect it with an ad-hoc policy or an Azure template. Aplikace potom použije správné zásady, které odpovídají vstupům, a vytvoří dokument s ochranou informací.The application will then apply the correct policies according to the inputs, creating a information protected document. Použijete ukázkový kód testovací aplikace Azure IP, která je na Githubu.The sample code you will be using is Azure IP test application and is on Github.

Požadavky ukázkové aplikaceSample app prerequisites

  • Operační systém: Windows 10, Windows 8, Windows 7, Windows Server 2008, Windows Server 2008 R2 nebo Windows Server 2012Operating System: Windows 10, Windows 8, Windows 7, Windows Server 2008, Windows Server 2008 R2, or Windows Server 2012
  • Programovací jazyk: C# (.NET Framework 3.0 nebo vyšší)Programming Language: C# (.NET Framework 3.0 and above)
  • Vývojové prostředí: Visual Studio 2015 (nebo novější)Development environment: Visual Studio 2015 (and later)

Nastavení konfigurace AzureSetting up your Azure Configuration

Když chcete nastavit Azure pro tuto aplikaci, musíte vytvořit ID tenanta, symetrický klíč a ID instančního objektu aplikace.Getting Azure set up for this app requires you to create a Tenant ID, a Symmetric Key, and an Application Principal ID.

Konfigurace tenanta Azure ADAzure AD Tenant configuration

Abyste mohli nakonfigurovat prostředí Azure AD pro Azure Information Protection, postupujte podle pokynů v článku Aktivace Azure Rights Management.To configure the Azure AD environment for Azure Information Protection, follow the guidance in Activating Azure Rights Management.

Po aktivaci služby budete pro další kroky potřebovat součásti PowerShellu.Once the service is activated you will need PowerShell components for the next steps. Postupujte proto podle pokynů v článku Správa služby Azure Rights Management pomocí Windows PowerShellu.Follow Administering the Azure Rights Management service by using Windows PowerShell to accomplish this.

Získání ID tenantaGetting your Tenant ID

  • Spusťte PowerShell jako správce.As an administrator, run PowerShell.
  • Importujte modul RMS: Import-Module AADRMImport the RMS module: Import-Module AADRM
  • Připojte se ke službě pomocí přiřazených uživatelských přihlašovacích údajů: Connect-AadrmService –VerboseConnect to the service with the assigned user credentials: Connect-AadrmService –Verbose
  • Povolte RMS: Enable-AADRMEnsure RMS is enabled: Enable-AADRM
  • Získejte ID tenanta: Get-AadrmConfigurationGet your tenant ID by running: Get-AadrmConfiguration

Zapište si hodnotu BPOSId (ID tenanta).Record the BPOSId (tenant ID) value. Budete ji potřebovat v budoucích krocích.You will need it in future steps.

Příklad výstupu Výstup rutinyExample output cmdlet output

  • Odpojte se od služby: Disconnect-AadrmServiceDisconnect from the service: Disconnect-AadrmService

Vytvoření instančního objektu službyCreate a service Principal

Vytvořte instanční objekt služby podle těchto pokynů:Follow these steps to create a Service Principal:

Instanční objekt služby představuje přihlašovací údaje nakonfigurované globálně pro řízení přístupu, které službě umožňují provést ověření v Microsoft Azure AD a chránit informace pomocí Microsoft Azure AD Rights Management.A service principal is credentials configured globally for access control that allow a service to authenticate with Microsoft Azure AD and to protect information using Microsoft Azure AD Rights Management

  • Spusťte PowerShell jako správce.As an administrator, run PowerShell
  • Importujte modul Microsoft Azure AD: Import-Module MSOnlineImport the Microsoft Azure AD module using: Import-Module MSOnline
  • Připojte se k online službě pomocí přiřazených uživatelských přihlašovacích údajů: Connect-MsolServiceConnect to your online service with the assigned user credentials: Connect-MsolService
  • Vytvořte nový instanční objekt služby: New-MsolServicePrincipalCreate a new service principal by running: New-MsolServicePrincipal
  • Zadejte název instančního objektu službyProvide a name for your service principal > Zapište si symetrický klíč a ID instančního objektu aplikace pro budoucí použití.Record the symmetric key and application principal id for future use.

Příklad výstupu Výstup rutinyExample output cmdlet output

  • Přidejte ID instančního objektu aplikace, symetrický klíč a ID tenanta do souboru App.config aplikace.Add your application principal id, symmetric key, and tenant ID to the application’s App.config file.

Příklad souboru App.config Výstup rutinyExample App.config file cmdlet output

  • Od chvíle, kdy aplikaci zaregistrujete v Azure, budete mít k dispozici ID klienta a Identifikátor URI pro přesměrování.The ClientID and RedirectUri will be available to you from when you registered your application in Azure. Další informace o tom, jak zaregistrovat aplikaci v Azure a získat ID klienta a Identifikátor URI pro přesměrování, najdete v článku Konfigurace Azure RMS pro ověřování ADAL.For more information on how to register your application in Azure and to acquire a ClientID and RedirectUri see, Configure Azure RMS for ADAL authentication.

Shrnutí návrhuDesign summary

Následující diagram znázorňuje architekturu a průběh zpracování u vytvářené aplikace. Níže jsou uvedeny jednotlivé kroky.The following diagram depicts an architecture and process flow for the app you're creating, steps outlined below. Shrnutí návrhudesign summary

  1. Uživatel:The user inputs:
    • Zadá cestu souboru, který se má chránit.The path of the file to be protected
    • Vybere šablonu nebo vytvoří zásady ad hoc.Selects a template or creates an ad-hoc policy
  2. Aplikace požádá o ověření v AIP.The application requests authentication with AIP.
  3. AIP potvrdí ověření.AIP confirms authentication
  4. Aplikace požádá o šablony z AIP.The application requests templates from the AIP.
  5. AIP vrátí předdefinované šablony.AIP returns pre-defined templates.
  6. Aplikace vyhledá určený soubor v daném umístění.The application locates the specified file with given location.
  7. Aplikace na soubor použije zásady ochrany AIP.The application applies the AIP protection policy to the file.

Jak kód fungujeHow the code works

V ukázkové testovací aplikaci Azure IP začíná řešení souborem Iprotect.cs.In the sample, Azure IP Test, the solution begins up with the file Iprotect.cs. Je to konzolová aplikace v C# a (jako u každé jiné aplikace podporující AIP) začnete načtením knihovny MSIPC.dll, jak je vidět v metodě main().This is a C# console application and, like with any other AIP enabled application, you begin with loading the MSIPC.dll as shown in the main() method.

//Loads MSIPC.dll
SafeNativeMethods.IpcInitialize();
SafeNativeMethods.IpcSetAPIMode(APIMode.Server);

Načtěte parametry potřebné pro připojení k Azure.Load the parameters needed to connect to Azure

//Loads credentials for the service principal from App.Config
SymmetricKeyCredential symmetricKeyCred = new SymmetricKeyCredential();
symmetricKeyCred.AppPrincipalId = ConfigurationManager.AppSettings["AppPrincipalId"];
symmetricKeyCred.Base64Key = ConfigurationManager.AppSettings["Base64Key"];
symmetricKeyCred.BposTenantId = ConfigurationManager.AppSettings["BposTenantId"];

Když v konzolové aplikaci zadáte cestu k souboru, aplikace zkontroluje, jestli už je dokument zašifrovaný.When you provide the file path in the console application, the application checks if the document is already encrypted. Použije k tomu metodu třídy SafeFileApiNativeMethods.The method is of the SafeFileApiNativeMethods class.

var checkEncryptionStatus = SafeFileApiNativeMethods.IpcfIsFileEncrypted(filePath);

Pokud není dokument zašifrovaný, pokračuje aplikace tím, že dokument zašifruje v souladu s výběry poskytnutými při výzvě.If the document is not encrypted, then it proceeds to encrypt the document with the selection provided on the prompt.

if (!checkEncryptionStatus.ToString().ToLower().Contains(alreadyEncrypted))
{
  if (method == EncryptionMethod1)
  {
    //Encrypt a file via AIP template
    ProtectWithTemplate(symmetricKeyCred, filePath);

  }
  else if (method == EncryptionMethod2)
  {
    //Encrypt a file using ad-hoc policy
    ProtectWithAdHocPolicy(symmetricKeyCred, filePath);
  }

Varianta ochrany pomocí šablony pokračuje získáním seznamu ze serveru a nabídne uživateli možnost si vybrat.The protect with template option proceeds to get the template list from the server and provides the user the option to select.

Pokud jste šablony nezměnili, získáte z AIP výchozí šablony.If you did not Modify templates then you will get default templates from AIP

 public static void ProtectWithTemplate(SymmetricKeyCredential symmetricKeyCredential, string filePath)
 {
   // Gets the available templates for this tenant             
   Collection<TemplateInfo> templates = SafeNativeMethods.IpcGetTemplateList(null, false, true,
       false, true, null, null, symmetricKeyCredential);

   //Requests tenant template to use for encryption
   Console.WriteLine("Please select the template you would like to use to encrypt the file.");

   //Outputs templates available for selection
   int counter = 0;
   for (int i = 0; i < templates.Count; i++)
   {
     counter++;
     Console.WriteLine(counter + ". " + templates.ElementAt(i).Name + "\n" +
         templates.ElementAt(i).Description);
   }

   //Parses template selection
   string input = Console.ReadLine();
   int templateSelection;
   bool parseResult = Int32.TryParse(input, out templateSelection);

   //Returns error if no template selection is entered
   if (parseResult)
   {
     //Ensures template value entered is valid
     if (0 < templateSelection && templateSelection <= counter)
     {
       templateSelection -= templateSelection;

       // Encrypts the file using the selected template             
       TemplateInfo selectedTemplateInfo = templates.ElementAt(templateSelection);

       string encryptedFilePath = SafeFileApiNativeMethods.IpcfEncryptFile(filePath,
           selectedTemplateInfo.TemplateId,
           SafeFileApiNativeMethods.EncryptFlags.IPCF_EF_FLAG_KEY_NO_PERSIST, true, false, true, null,
           symmetricKeyCredential);
      }
    }
  }

Pokud vyberete zásady ad hoc, musí uživatel aplikace poskytnout e-mailové adresy lidí, kteří mají mít práva.If you select ad-hoc policy, the user of the application has to provide emails of the people that would have rights. V tomto oddílu se vytvoří licence použitím metody IpcCreateLicenseFromScratch() a aplikováním zásad na šablonu.In this section the license is created using the IpcCreateLicenseFromScratch() method and applying the new policy on the template.

if (issuerDisplayName.Trim() != "")
{
  // Gets the available issuers of rights policy templates.              
  // The available issuers is a list of RMS servers that this user has already contacted.
  try
  {
    Collection<TemplateIssuer> templateIssuers = SafeNativeMethods.IpcGetTemplateIssuerList(
                                                    null,
                                                    true,
                                                    false,
                                                    false, true, null, symmetricKeyCredential);

    // Creates the policy and associates the chosen user rights with it             
    SafeInformationProtectionLicenseHandle handle = SafeNativeMethods.IpcCreateLicenseFromScratch(
                                                        templateIssuers.ElementAt(0));
    SafeNativeMethods.IpcSetLicenseOwner(handle, owner);
    SafeNativeMethods.IpcSetLicenseUserRightsList(handle, userRights);
    SafeNativeMethods.IpcSetLicenseDescriptor(handle, new TemplateInfo(null, CultureInfo.CurrentCulture,
                                                            policyName,
                                                            policyDescription,
                                                            issuerDisplayName,
                                                            false));

    //Encrypts the file using the ad hoc policy             
    string encryptedFilePath = SafeFileApiNativeMethods.IpcfEncryptFile(
                                   filePath,
                                   handle,
                                   SafeFileApiNativeMethods.EncryptFlags.IPCF_EF_FLAG_KEY_NO_PERSIST,
                                   true,
                                   false,
                                   true,
                                   null,
                                   symmetricKeyCredential);
   }
}

Příklad uživatelské interakceUser interaction example

Až všechno vytvoříte a provedete, měly by výstupy z aplikace vypadat následovně:Once you get everything built and executing, the outputs of the application should look like the following:

1.Budete vyzváni, abyste vybrali metodu šifrování.1.You are prompted to select an encryption method. Výstup aplikace – krok 1app output - step 1

  1. Budete požádáni, abyste zadali cestu k souboru, který chcete chránit.You are asked to provide the path to the file to be protected. Výstup aplikace – krok 2app output - step 2

  2. Budete vyzváni, abyste zadali e-mailovou adresu vlastníka licence (tento vlastník musí mít na tenantovi Azure AD oprávnění globálního správce).You are prompted to enter a license owner’s email (this owner must have Global Administrator privileges on the Azure AD Tenant). Výstup aplikace – krok 3app output - step 3

  3. Zadáte e-mailové adresy uživatelů, kteří mají mít práva pro přístup k souboru (e-mailové adresy musí být oddělené mezerami).You enter email addresses of users who will have rights to access the file (emails must be separated by spaces). Výstup aplikace – krok 4app output - step 4

  4. V seznamu vyberete práva, která chcete oprávněným uživatelům udělit.You select from a list of rights to be given to the authorized users. Výstup aplikace – krok 5app output - step 5

  5. Nakonec zadáte některá metadata zásad: název zásad, popis a zobrazovaný název vystavitele (Azure AD Tenant) Výstup aplikace – krok 6Finally, you enter some policy metadata: policy name, description, and issuer (Azure AD Tenant) display name app output - step 6

KomentářeComments

Před přidáním komentáře se podívejte na naše pravidla organizace.Before commenting, we ask that you review our House rules.