Procedimentos: utilizar a autenticação ADALHow-to: use ADAL authentication

Autenticação com o Azure RMS para a sua aplicação com o ADAL (Azure Active Directory Authentication Library).Authentication with Azure RMS for your app using Azure Active Directory Authentication Library (ADAL).

Ao atualizar a aplicação para utilizar a autenticação ADAL em vez do Assistente de Início de Sessão Online da Microsoft, o utilizador e os seus clientes poderão:By updating your application to use ADAL authentication rather than the Microsoft Online Sign-in Assistant, you and your customers will be able to:

  • Utilizar a autenticação multifatorUtilize multi-factor authentication
  • Instalar o cliente RMS 2.1 sem necessidade de privilégios administrativos no computadorInstall the RMS 2.1 client without requiring administrative privileges to the machine
  • Certificar a aplicação para o Windows 10Certify your application for Windows 10

Duas abordagens para autenticaçãoTwo approaches to authentication

Este tópico contém duas abordagens para autenticação com os exemplos de código correspondentes.This topic contains two approaches to authentication with corresponding code examples.

  • Autenticação interna – Autenticação OAuth gerida pelo SDK RMS.Internal authentication - OAuth authentication managed by the RMS SDK.

    Utilize esta abordagem se pretender que o cliente RMS apresente um pedido de autenticação ADAL quando a autenticação for necessária.Use this approach if you want the RMS client to display an ADAL authentication prompt when authentication is necessary. Para obter detalhes sobre como configurar a sua aplicação, consulte a secção “Autenticação interna”.For details on how to configure your application, see the section, "Internal authentication".

    Nota

    Se a sua aplicação utilizar atualmente o SDK AD RMS 2.1 com o assistente de início de sessão, recomendamos que utilize o método de autenticação interno como o caminho de migração da sua aplicação.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.

  • Autenticação externa – Autenticação OAuth gerida pela sua aplicação.External authentication - OAuth authentication managed by your application.

    Utilize esta abordagem se pretender que a aplicação efetue a gestão da sua própria autenticação OAuth.Use this approach if you want your application to manage its own OAuth authentication. Com esta abordagem, o cliente RMS irá exercer uma chamada de retorno definida pela aplicação quando a autenticação for necessária.With this approach, the RMS client will exercise an application defined callback when authentication is necessary. Para obter um exemplo detalhado, consulte “Autenticação externa” no final deste tópico.For a detailed example, see "External authentication" at the end of this topic.

    Nota

    A autenticação externa não implica a capacidade de alterar os utilizadores. O cliente RMS utiliza sempre o utilizador predefinido de um inquilino do RMS especificado.External authentication does not imply the ability to change users; the RMS client always uses the default user for a given RMS tenant.

Autenticação internaInternal authentication

  1. Siga os passos da configuração do Azure em Configurar o Azure RMS para autenticação ADAL e, em seguida, volte ao passo de inicialização de aplicação seguinte.Follow the Azure configuration steps in Configure Azure RMS for ADAL authentication then return to the following app initialization step.
  2. Agora está pronto para configurar a sua aplicação para utilizar a autenticação ADAL interna fornecida pelo SDK RMS 2.1.You are now ready to configure your application to use the internal ADAL authentication provided by the RMS SDK 2.1.

Para configurar o cliente RMS, adicione uma chamada para IpcSetGlobalProperty imediatamente após chamar IpcInitialize para configurar o cliente RMS.To configure you RMS client, add a call to IpcSetGlobalProperty right after calling IpcInitialize to configure the RMS client. Utilize o seguinte fragmento de código como um exemplo.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
  }

Autenticação ExternaExternal Authentication

Utilize este código como um exemplo de como gerir os seus próprios tokens de autenticação.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);
  }

Tópicos relacionadosRelated topics

ComentáriosComments

Antes de inserir um comentário, pedimos-lhe que reveja as nossas Regras básicas.Before commenting, we ask that you review our House rules.