Autenticare l'utente con i servizi Web

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

È possibile utilizzare la funzionalità esterna di autenticazione client di Microsoft Dynamics 365 per sviluppare proprie applicazioni client per i dispositivi mobili, ad esempio telefoni e tablet nonché per il desktop Windows 8. Questa funzionalità è disponibile anche per le applicazioni non .NET.

In questo argomento

Informazioni generali sull'autenticazione

Dipendenze tecnologiche

Sicurezza

Accesso dell'utente e registrazione dell'applicazione

Applicazione client

Endpoint di autorizzazione OAuth

Individuare l'URL dell'endpoint OAuth

Specificare una risorsa OAuth

Informazioni generali sull'autenticazione

Gli sviluppatori che realizzano app moderne e mobili, inclusi le applicazioni non compilate in .NET Framework, possono accedere ai dati aziendali di Microsoft Dynamics 365 mediante gli endpoint SOAP e OData del servizio Web dell'organizzazione. Il servizio Web supporta l'autenticazione di determinate funzioni presenti nel protocollo OAuth 2.0.

Nell'elenco seguente vengono elencati gli elementi supportati per l'autenticazione di app moderne e mobili:

  • Utilizzo dei token Web JSON nell'intestazione di autorizzazione HTTP

  • Autenticazione per il servizio OData da applicazioni esterne (esterna al browser)

  • Autenticazione per il servizio Organization.svc/web (SOAP) da applicazioni esterne (esterna al browser)

Dipendenze tecnologiche

La seguente tecnologia è necessaria per sviluppare ed eseguire applicazioni client esterne che vengono autenticate con gli endpoint del servizio Web Microsoft Dynamics 365OData e SOAP:

La seguente tecnologia è facoltativa per sviluppare ed eseguire applicazioni client esterne che vengono autenticate con gli endpoint del servizio Web Microsoft Dynamics 365OData e SOAP:

Sicurezza

Le seguenti informazioni sulla sicurezza si applicano alla funzionalità di autenticazione:

  • Il token di autenticazione è archiviato nel dispositivo nell'archiviazione protetta. Per il sistema operativo Windows, si utilizza Gestione credenziali di Windows.

  • La funzionalità fa uso di Transport Layer Security (TLS) o Secure Sockets Layer (SSL) per le richieste HTTP.

Accesso dell'utente e registrazione dell'applicazione

Le seguenti informazioni sono relative all'accesso dell'utente e alla registrazione dell'applicazione.

  • L'accesso dell'utente per Libreria di autenticazione di Microsoft Azure Active Directory (ADAL) viene gestito da un contesto del Web browser.

  • La registrazione dell'applicazione viene gestita tramite AzureActive Directory per una distribuzione Dynamics 365 (online) e Active Directory Federation Services (ADFS) per una distribuzione locale o Distribuzione con connessione Internet. È possibile utilizzare il portale di gestione Microsoft Azure o API per registrare l'applicazione con Dynamics 365 (online).

Applicazione client

L'intervallo di operazioni che un'applicazione client esterna può eseguire è riepilogato nell'elenco seguente:

  • Quando si utilizza l'endpoint OData, sono supportate le operazioni di creazione, recupero, aggiornamento ed eliminazione. Non è disponibile alcun supporto per l'esecuzione di messaggi o il recupero di metadati.

  • Quando si utilizza l'endpoint SOAP (Organization.svc/web) per le applicazioni moderne e mobili, è disponibile l'accesso al set completo di funzionalità del servizio Web.

Quando si scrive il codice client che esegue chiamate al servizio Web, si consiglia di richiedere un token tramite ADAL prima di ogni chiamata di assistenza. In questo modo ADAL può determinare se riutilizzare un'istanza memorizzata nella cache del token di accesso, eseguire una richiesta per una nuova tramite il token aggiornato oppure richiedere l'accesso dell'utente.

Individuare l'URL dell'endpoint OAuth

La possibilità all'individuazione di servizio per l'autenticazione del funzionamento in runtime viene specificata come un altro metodo per ottenere un servizio rispetto il provider hardcoding URLs del provider OAuth in applicazione o file di configurazione.

Il processo di individuazione viene avviato inviando una richiesta HTTP non autorizzata con la parola "Bearer" nell'intestazione Authorization e l'URL dell'endpoint SOAP dell'organizzazione tenant come messaggio di richiesta.

GET /XRMServices/2011/Organization.svc HTTP/1.1 Host: <org>.crm.dynamics.com Authorization: Bearer

Nota

La richiesta di connessione ora è facoltativa. L'esecuzione di GET senza un'intestazione di autorizzazione ottiene gli stessi risultati.

Un errore 401 viene restituito con una risposta contenente un parametro authorization_uri. Il valore del parametro è un URL di autorità.

HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer authorization_uri=URI

La funzionalità di individuazione autorità è disponibile per i client SOAP solo quando una proprietà SdkClientVersion è presente nell'URL dell'endpoint SOAP dell'organizzazione tenant. Un URL di esempio è indicato di seguito.

https://contoso.crm.dynamics.com/XRMServices/2011/Organization.svc/web?SdkClientVersion=6.1.0.533;

Il valore di SdkClientVersion può essere un numero di versione con almeno un punto decimale e maggiore di 6.0.0002.0000. È consigliabile che il valore della proprietà SdkClientVersion sia impostato sulla versione di build di prodotto degli assembly SDK che erano collegati all'applicazione client.

Il seguente esempio di codice illustra come ottenere l'URL dell'autorità. Si noti che il codice di esempio utilizza Libreria di autenticazione di Microsoft Azure Active Directory (ADAL), che si ottiene da NuGet.org. Sono inoltre disponibili le versioni open source della libreria per Android e IOS.


/// <summary>
/// Discover the authentication authority.
/// </summary>
/// <param name="serviceUrl">The URL of the organization's SOAP endpoint. </param>
/// <returns>The authority URL.</returns>
/// <remarks>The service URL must contain the SdkClient property.</remarks>
/// <example>https://contoso.crm.dynamics.com/XRMServices/2011/Organization.svc/web?SdkClientVersion=6.1.0.533;</example>
public static string DiscoveryAuthority(Uri serviceUrl)
{
    // Use AuthenticationParameters to send a request to the organization's endpoint and
    // receive tenant information in the 401 challenge. 
    Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationParameters parameters = null;
    HttpWebResponse response = null;
    try
    {
        // Create a web request where the authorization header contains the word "Bearer".
        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);

        // The response is to be encoded.
        httpWebRequest.ContentType = "application/x-www-form-urlencoded";
        response = (HttpWebResponse)httpWebRequest.GetResponse();
    }

    catch (WebException ex)
    {
        response = (HttpWebResponse)ex.Response;

        // A 401 error should be returned. Extract any parameters from the response.
        // The response should contain an authorization_uri parameter.
        parameters = Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationParameters.
            CreateFromResponseAuthenticateHeader((response.Headers)["WWW-Authenticate"]);
    }
    finally
    {
        if (response != null)
            response.Dispose();
    }
    // Return the authority URL.
    return parameters.Authority;
}

Endpoint di autorizzazione OAuth

Un metodo alternativo all'utilizzo dell'individuazione OAuth consiste nell'utilizzo degli endpoint di autorizzazione OAuth. Quando si scrive un'applicazione che viene autenticata con i servizi Web Microsoft Dynamics 365 (online e locale), è necessario utilizzare gli URLs del provider OAuth nel codice di autenticazione, come illustrato nella tabella seguente.

Distribuzione

URL

Microsoft Dynamics 365 (online)

HYPERLINK "https://login.windows.net/common/oauth2/authorize" https://login.windows.net/common/oauth2/authorize (multi-tenant)

https://login.windows.net/<tenant ID>/oauth2/authorize (single-tenant)

Microsoft Dynamics 365 (locale/IFD)

https://<serverFQDNaddress>/adfs/ls

Sostituire l'indirizzo del server IFD, ad esempio contoso.com, in servizio token di sicurezzaURL. L'URL STS visualizzato è per l'installazione predefinita di AD FS. L'installazione non predefinita può utilizzare un altro URL. Analogamente, sostituire l'ID tenant dove indicato.

È consigliabile utilizzare sempre l'individuazione OAuth con Dynamics 365 (online) poiché gli endpoint di autorizzazioni saranno soggetti a modifiche in futuro.

Specificare una risorsa OAuth

Nell'eseguire l'autenticazione con Microsoft AzureActive Directory utilizzando il flusso di codice dell'autorizzazione OAuth, è necessario specificare un valore per la risorsa di destinazione. L'indirizzo Web radice dell'organizzazione, ad esempio: https://contoso.crm.dynamics.com, deve essere utilizzato come parametro di stringa di query di "risorsa" nella chiamata all'endpoint di autorizzazione OAuth.

// Obtain an authentication token to access the web service.
String resource = “https://contoso.crm.dynamics.com”; 
_authenticationContext = new AuthenticationContext(_oauthUrl, false );
AuthenticationResult result = await _authenticationContext.AcquireTokenAsync( resource, clientID );

Ulteriori informazioni:Esempio: applicazione OData moderna desktop per Windows 8

Vedere anche

Scrivere moderne applicazioni per dispositivi mobili
Procedura dettagliata: registrare un'app Dynamics 365 con Active Directory
Autenticare gli utenti in Microsoft Dynamics 365
Blog: introduzione a una nuova funzionalità nell'anteprima per sviluppatori di Azure AD: la libreria di autenticazione di Azure
Autenticazione CRM lato server con Azure Active Directory

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright