Nasıl yapılır: ADAL kimlik doğrulamasını kullanmaHow-to: use ADAL authentication

Azure Active Directory Authentication Library (ADAL) kullanarak uygulamanızda Azure RMS ile kimlik doğrulaması yapabilirsiniz.Authentication with Azure RMS for your app using Azure Active Directory Authentication Library (ADAL).

Uygulamanızı Microsoft Online Oturum Açma Yardımcısı yerine ADAL kimlik doğrulaması kullanmak üzere güncelleştirdiğinizde siz ve müşterileriniz aşağıdakileri gerçekleştirebilirsiniz:By updating your application to use ADAL authentication rather than the Microsoft Online Sign-in Assistant, you and your customers will be able to:

  • Çok faktörlü kimlik doğrulaması kullanmaUtilize multi-factor authentication
  • Makine için yönetici ayrıcalıklarına gerek duymadan RMS 2.1 istemcisini yüklemeInstall the RMS 2.1 client without requiring administrative privileges to the machine
  • Uygulama için Windows 10 onayı almaCertify your application for Windows 10

Kimlik doğrulamasına iki yaklaşımTwo approaches to authentication

Bu konuda, kimlik doğrulamasına iki yaklaşım ilgili kod örnekleriyle birlikte açıklanmaktadır.This topic contains two approaches to authentication with corresponding code examples.

  • İç kimlik doğrulaması - RMS SDK tarafından yönetilen OAuth kimlik doğrulaması.Internal authentication - OAuth authentication managed by the RMS SDK.

    Kimlik doğrulaması gerekli olduğunda RMS istemcisinin bir ADAL kimlik doğrulama istemi görüntülemesini istiyorsanız bu yaklaşımı kullanın.Use this approach if you want the RMS client to display an ADAL authentication prompt when authentication is necessary. Uygulamanızı yapılandırma hakkında ayrıntılı bilgiler için "İç kimlik doğrulaması" bölümüne bakın.For details on how to configure your application, see the section, "Internal authentication".

    Not

    Uygulamanız şu anda AD RMS SDK 2.1’i oturum açma yardımcısı ile kullanıyorsa, uygulama geçiş yolunuz olarak iç kimlik doğrulaması yöntemini kullanmanızı öneririz.If your application currently uses AD RMS SDK 2.1 with the sign-in assistant, we recommend that you use the internal authentication method as your application migration path.

  • Dış kimlik doğrulaması - Uygulamanız tarafından yönetilen OAuth kimlik doğrulaması.External authentication - OAuth authentication managed by your application.

    Uygulamanızın kendi OAuth kimlik doğrulamasını yönetmesini istiyorsanız bu yaklaşımı kullanın.Use this approach if you want your application to manage its own OAuth authentication. Bu yaklaşımda, kimlik doğrulaması gerekli olduğunda RMS istemcisi uygulama tanımlı bir geri çağırma kullanır.With this approach, the RMS client will exercise an application defined callback when authentication is necessary. Ayrıntılı bir örnek için bu konunun sonundaki "Dış kimlik doğrulaması" bölümüne bakın.For a detailed example, see "External authentication" at the end of this topic.

    Not

    Dış kimlik doğrulaması, kullanıcı değiştirme yeteneği anlamına gelmez; RMS istemcisi, belirli bir RMS kiracısı için her zaman varsayılan kullanıcıyı kullanır.External authentication does not imply the ability to change users; the RMS client always uses the default user for a given RMS tenant.

İç kimlik doğrulamasıInternal authentication

  1. Azure RMS’yi ADAL kimlik doğrulaması için yapılandırma konusundaki Azure yapılandırma adımlarını izleyin ve sonra aşağıdaki uygulama başlatma adımına dönün.Follow the Azure configuration steps in Configure Azure RMS for ADAL authentication then return to the following app initialization step.
  2. Artık uygulamanızı RMS SDK 2.1 tarafından sağlanan iç ADAL kimlik doğrulamasını kullanacak şekilde yapılandırmaya hazırsınız.You are now ready to configure your application to use the internal ADAL authentication provided by the RMS SDK 2.1.

RMS istemcinizi yapılandırmak için, IpcInitialize’ı çağırdıktan hemen sonra IpcSetGlobalProperty’ye bir çağrı ekleyin.To configure you RMS client, add a call to IpcSetGlobalProperty right after calling IpcInitialize to configure the RMS client. Aşağıdaki kod parçacığını bir örnek olarak kullanabilirsiniz.Use the following code snippet as an example.

  C++
  IpcInitialize();

  IPC_AAD_APPLICATION_ID applicationId = { 0 };
  applicationId.cbSize = sizeof(IPC_AAD_APPLICATION_ID);
  applicationId.wszClientId = L"GUID-provided-by-AAD-for-your-app-(no-brackets)";
  applicationId.wszRedirectUri = L"RedirectionUriWeProvidedAADForOurApp://authorize";
  HRESULT hr = IpcSetGlobalProperty(IPC_EI_APPLICATION_ID, &applicationId);
  if (FAILED(hr)) {
    //Handle the error
  }

Dış Kimlik DoğrulamaExternal Authentication

Kendi kimlik doğrulama belirteçlerinizi nasıl yöneteceğinizi gösteren bir örnek olarak bu kodu kullanabilirsiniz.Use this code as an example of how to manage your own authentication tokens. C++ extern HRESULT GetADALToken(LPVOID pContext, const IPC_NAME_VALUE_LIST& Parameters, __out wstring wstrToken) throw();C++ extern HRESULT GetADALToken(LPVOID pContext, const IPC_NAME_VALUE_LIST& Parameters, __out wstring wstrToken) throw();

  HRESULT GetLicenseKey(PCIPC_BUFFER pvLicense, __in LPVOID pContextForAdal, __out IPC_KEY_HANDLE &hKey)
  {
      IPC_OAUTH2_CALLBACK pfGetADALToken =
      [](LPVOID pvContext, PIPC_NAME_VALUE_LIST pParameters, IPC_AUTH_TOKEN_HANDLE* phAuthToken) -> HRESULT
      {
          wstring wstrToken;
          HRESULT hr = GetADALToken(pvContext, *pParameters, wstrToken);
          return SUCCEEDED(hr) ? IpcCreateOAuth2Token(wstrToken.c_str(), OUT phAuthToken) : hr;
      };

      IPC_OAUTH2_CALLBACK_INFO callbackCredentialContext =
      {
          sizeof(IPC_OAUTH2_CALLBACK_INFO),
          pfGetADALToken,
          pContextForAdal
      };

      IPC_CREDENTIAL credentialContext =
      {
          IPC_CREDENTIAL_TYPE_OAUTH2,
          NULL
      };
      credentialContext.pcOAuth2 = &callbackCredentialContext;

      IPC_PROMPT_CTX promptContext =
      {
          sizeof(IPC_PROMPT_CTX),
          NULL,
          IPC_PROMPT_FLAG_SILENT | IPC_PROMPT_FLAG_HAS_USER_CONSENT,
          NULL,
          &credentialContext
      };

      hKey = 0L;
      return IpcGetKey(pvLicense, 0, &promptContext, NULL, &hKey);
  }