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 configurazione di attestazioni è necessaria per la distribuzione locale.
AD FS in TechNet: Windows Server 2012 R2.
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:
Libreria di autenticazione di Microsoft Azure Active Directory (ADAL)
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