Comment : utiliser l’authentification ADALHow-to: use ADAL authentication

Authentification auprès d’Azure RMS pour votre application à l’aide de la bibliothèque d’authentification ADAL (Azure Active Directory Authentication Library).Authentication with Azure RMS for your app using Azure Active Directory Authentication Library (ADAL).

En mettant à jour votre application pour utiliser l’authentification ADAL au lieu de l’Assistant de connexion Microsoft Online, vous et vos clients pouvez :By updating your application to use ADAL authentication rather than the Microsoft Online Sign-in Assistant, you and your customers will be able to:

  • Utiliser l’authentification multifacteur.Utilize multi-factor authentication
  • Installer le client RMS 2.1 sans nécessiter de privilèges d’administration sur l’ordinateur.Install the RMS 2.1 client without requiring administrative privileges to the machine
  • Certifier votre application pour Windows 10Certify your application for Windows 10

Deux approches de l’authentificationTwo approaches to authentication

Cette rubrique contient deux approches de l’authentification avec des exemples de code correspondant.This topic contains two approaches to authentication with corresponding code examples.

  • Authentification interne : authentification OAuth gérée par le SDK RMS.Internal authentication - OAuth authentication managed by the RMS SDK.

    Adoptez cette approche si vous souhaitez que le client RMS affiche une invite d’authentification ADAL quand l’authentification est nécessaire.Use this approach if you want the RMS client to display an ADAL authentication prompt when authentication is necessary. Pour plus d’informations sur la façon de configurer votre application, consultez la section « Authentification interne ».For details on how to configure your application, see the section, "Internal authentication".

    Note

    Si votre application utilise actuellement AD RMS SDK 2.1 avec l’Assistant de connexion, nous vous recommandons d’utiliser la méthode d’authentification interne comme chemin de migration d’application.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.

  • Authentification externe : authentification OAuth gérée par votre application.External authentication - OAuth authentication managed by your application.

    Adoptez cette approche si vous souhaitez que votre application gère sa propre authentification OAuth.Use this approach if you want your application to manage its own OAuth authentication. Avec cette approche, le client RMS exerce un rappel défini par l’application quand l’authentification est nécessaire.With this approach, the RMS client will exercise an application defined callback when authentication is necessary. Pour obtenir un exemple détaillé, consultez « Authentification externe » à la fin de cette rubrique.For a detailed example, see "External authentication" at the end of this topic.

    Note

    L’authentification externe n’implique pas la possibilité de modifier les utilisateurs. Le client RMS utilise toujours l’utilisateur par défaut pour un client RMS donné.External authentication does not imply the ability to change users; the RMS client always uses the default user for a given RMS tenant.

Authentification interneInternal authentication

  1. Suivez les étapes de configuration d’Azure indiquées dans Configurer Azure RMS pour l’authentification ADAL, puis revenez à l’étape d’initialisation de l’application suivante.Follow the Azure configuration steps in Configure Azure RMS for ADAL authentication then return to the following app initialization step.
  2. Vous êtes maintenant prêt à configurer votre application pour utiliser l’authentification ADAL interne fournie par RMS SDK 2.1.You are now ready to configure your application to use the internal ADAL authentication provided by the RMS SDK 2.1.

Pour configurer votre client RMS, ajoutez un appel à IpcSetGlobalProperty juste après l’appel à IpcInitialize.To configure you RMS client, add a call to IpcSetGlobalProperty right after calling IpcInitialize to configure the RMS client. Utilisez l’extrait de code suivant en guise d’exemple.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
  }

Authentification externeExternal Authentication

Utilisez ce code en tant qu’exemple du mode de gestion de vos propres jetons d’authentification.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);
  }

Rubriques connexesRelated topics

CommentairesComments

Avant de transmettre vos commentaires, nous vous demandons de consulter notre règlement interne.Before commenting, we ask that you review our House rules.