Anvisningar: Använda ADAL-autentiseringHow-to: use ADAL authentication

Autentisering med Azure RMS för ditt program med ADAL-bibliotek (Azure Active Directory Authentication Library).Authentication with Azure RMS for your app using Azure Active Directory Authentication Library (ADAL).

Genom att uppdatera programmet så att ADAL-autentisering används i stället för inloggningsassistenten för Microsoft Online kan du och dina kunder göra följande:By updating your application to use ADAL authentication rather than the Microsoft Online Sign-in Assistant, you and your customers will be able to:

  • Använda multifaktorautentiseringUtilize multi-factor authentication
  • Installera RMS 2.1-klienten utan administratörsbehörighet för datornInstall the RMS 2.1 client without requiring administrative privileges to the machine
  • Certifiera ett program för Windows 10Certify your application for Windows 10

Två autentiseringsmetoderTwo approaches to authentication

I det här avsnittet beskrivs två metoder för autentisering med motsvarande kodexempel.This topic contains two approaches to authentication with corresponding code examples.

  • Intern autentisering – OAuth-autentisering som hanteras av RMS SDK.Internal authentication - OAuth authentication managed by the RMS SDK.

    Använd den här metoden om du vill att RMS-klienten ska visa en uppmaning om ADAL-autentisering när autentisering krävs.Use this approach if you want the RMS client to display an ADAL authentication prompt when authentication is necessary. Mer information om hur du konfigurerar programmet finns i avsnittet ”Intern autentisering”.For details on how to configure your application, see the section, "Internal authentication".

    Anteckning

    Om AD RMS SDK 2.1 med inloggningsassistenten används för programmet för närvarande, rekommenderar vi att du använder den interna autentiseringsmetoden som sökväg för programmigreringen.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.

  • Extern autentisering – OAuth-autentisering som hanteras av programmet.External authentication - OAuth authentication managed by your application.

    Använd den här metoden om du vill att programmet ha en OAuth-autentisering.Use this approach if you want your application to manage its own OAuth authentication. Med den här metoden tillämpar RMS-klienten ett programdefinierat återanrop om autentisering krävs.With this approach, the RMS client will exercise an application defined callback when authentication is necessary. Ett detaljerat exempel finns under rubriken ”Extern autentisering” i slutet av det här avsnittet.For a detailed example, see "External authentication" at the end of this topic.

    Anteckning

    Extern autentisering innebär inte möjligheten att byta användare; RMS-klienten använder alltid standardanvändaren för en viss RMS-klient.External authentication does not imply the ability to change users; the RMS client always uses the default user for a given RMS tenant.

Intern autentiseringInternal authentication

  1. Följ konfigurationsstegen för Azure i Konfigurera Azure RMS för ADAL-autentisering och återgå sedan till följande programinitieringssteg.Follow the Azure configuration steps in Configure Azure RMS for ADAL authentication then return to the following app initialization step.
  2. Du är nu redo att konfigurera programmet att använda den interna ADAL-autentisering som tillhandahålls av 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.

Om du vill konfigurera RMS-klienten lägger du till ett anrop till rättigheten IpcSetGlobalProperty direkt efter anropet IpcInitialize för konfigurering av RMS-klienten.To configure you RMS client, add a call to IpcSetGlobalProperty right after calling IpcInitialize to configure the RMS client. Använd följande kodavsnitt som ett exempel.Use the following code snippet as an example.

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
}

Extern autentiseringExternal Authentication

Använd den här koden som ett exempel på hur du hanterar dina egna autentiseringstoken.Use this code as an example of how to manage your own authentication tokens.

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);
}