Authentifier l’utilisateur auprès des services Web

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Vous pouvez utiliser la fonctionnalité externe d’authentification du client de Microsoft Dynamics 365 pour développer vos propres applications clientes pour les appareils mobiles, tels que les tablettes et les téléphones, ainsi que pour le Bureau Windows 8. Cette fonction est également disponible pour les applications autres que les applications .NET.

Contenu de la rubrique

Présentation de l’authentification

Dépendances technologiques

Sécurité

Connexion utilisateur et inscription des applications

Application cliente

Points de terminaison d’autorisation OAuth

Découverte de l’URL du point de terminaison OAuth

Spécifier une ressource OAuth

Présentation de l’authentification

Les développeurs qui créent des applications modernes et des applications, notamment des applications qui ne reposent pas sur .NET Framework, peuvent accéder aux données commerciales de Microsoft Dynamics 365 via les points de terminaison SOAP et OData du service Web d’organisation. Ce service Web prend en charge certaines fonctions d’authentification du protocole OAuth 2.0.

La liste suivante décrit les éléments pris en charge pour l’authentification des applications modernes et mobiles :

  • Utilisation de jetons Web JSON dans l’en-tête d’autorisation HTTP

  • Authentification du service OData par des applications externes (en dehors du navigateur)

  • Authentification du service Organization.svc/web (SOAP) par des applications externes (en dehors du navigateur)

Dépendances technologiques

La technologie suivante est requise pour développer et exécuter les applications clientes externes qui s’authentifient auprès des points de terminaison des services Web Microsoft Dynamics 365OData et SOAP :

La technologie suivante est facultative pour développer et exécuter les applications clientes externes qui s’authentifient auprès des points de terminaison des services Web Microsoft Dynamics 365OData et SOAP :

Sécurité

Les informations de sécurité suivantes s’appliquent à cette fonctionnalité d’authentification :

  • Le jeton d’authentification est stocké sur l’appareil dans le stockage protégé. Pour le système d’exploitation Windows, le Gestionnaire d'informations d'identification Windows est utilisé.

  • La fonctionnalité se sert de TLS (Transport Layer Security) ou SSL (Secure Sockets Layer) pour les requêtes HTTP.

Connexion utilisateur et inscription des applications

Les informations suivantes sont associées à la connexion utilisateur et à l’inscription des applications.

  • La connexion utilisateur pour la Bibliothèque d'authentification Microsoft Azure Active Directory est gérée par le contexte d’un navigateur Web.

  • L’inscription des applications est gérée dans Azure Active Directory pour un déploiement de Dynamics 365 (en ligne), et Services ADFS (Active Directory Federation Services) pour le Déploiement avec accès via Internet (IFD) ou local. Vous pouvez utiliser le portail de gestion ou l’API de Microsoft Azure pour enregistrer votre application auprès de Dynamics 365 (en ligne).

Application cliente

La plage des opérations qu’une application cliente externe peut exécutée est résumée dans la liste suivante :

  • Avec le point de terminaison OData, les opérations Créer, Récupérer, Mettre à jour et Supprimer sont prises en charge. L’exécution des messages et la récupération des métadonnées ne sont pas prises en charge.

  • Avec le point de terminaison SOAP (Organization.svc/web) pour les applications modernes et mobiles, vous pouvez accéder à l’ensemble complet des fonctionnalités du service Web.

Lorsque vous écrivez le code client qui exécute les appels du service web, il est recommandé de demander un jeton via ADAL avant chaque appel du service. Ainsi, ADAL peut déterminer s'il convient de réutiliser une instance mise en cache du jeton d'accès, de faire une demande de nouveau jeton à l'aide du jeton d'actualisation ou d'inviter l'utilisateur à se connecter.

Découverte de l’URL du point de terminaison OAuth

La possibilité de découvrir l’autorité pour l’authentification du service Web au moment de l’exécution est fournie comme méthode secondaire pour obtenir l’autorité, par rapport au codage en dur des URLs de fournisseur OAuth dans les applications ou les fichiers de configuration.

Le processus de découverte est démarré en envoyant une requête HTTP non autorisée avec le mot « Bearer » dans l’en-tête Authorization et l’URL du point de terminaison SOAP de l’organisation du client comme message de requête.

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

Notes

La stimulation de support est désormais facultative. Un GET sans en-tête d'autorisation génère les mêmes résultats.

Une erreur 401 est retournée avec une réponse contenant un paramètre authorization_uri. La valeur de ce paramètre est une URL d’autorité.

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

La fonctionnalité de découverte d'autorité est rendue disponible uniquement aux clients SOAP lorsqu'une propriété SdkClientVersion figure dans l'URL du point de terminaison SOAP de l'organisation de l'utilisateur. Un exemple d’URL est fourni ci-dessous.

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

La valeur SdkClientVersion peut être un numéro de version contenant au moins une virgule et supérieur à 6.0.0002.0000. Il est recommandé de définir la valeur de la propriété SdkClientVersion sur la version de produit des assemblys du Kit de développement logiciel (SDK) associés à l’application cliente.

L’exemple de code suivant montre comment obtenir l’URL de l’autorité. Notez que l’exemple de code se sert de la Bibliothèque d'authentification Microsoft Azure Active Directory, disponible auprès de NuGet.org. Il existe également des versions open source dans cette bibliothèque pour Android et 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;
}

Points de terminaison d’autorisation OAuth

Une méthode alternative à la découverte OAuth est l’utilisation des points de terminaison OAuth bien connus. Pour rédiger une application qui s’authentifie auprès des services Web Microsoft Dynamics 365 (Online et local), vous devez utiliser les URLs de fournisseur OAuth dans votre code d’authentification, comme l’illustre le tableau suivant.

Déploiement

URL

Microsoft Dynamics 365 (Online)

HYPERLINK "https://login.windows.net/common/oauth2/authorize" https://login.windows.net/common/oauth2/authorize (architecture mutualisée)

https://login.windows.net/<tenant ID>/oauth2/authorize (client unique)

Microsoft Dynamics 365 (local/IFD)

https://<serverFQDNaddress>/adfs/ls

Substituez l’adresse de votre serveur IFD, par exemple contoso.com, dans l’URL du service d'émission de jeton de sécurité (STS). L’URL STS indiquée correspond à l’installation par défaut d’AD FS. Une installation différente de l’installation par défaut peut utiliser une autre URL. De même, substituez votre ID d’utilisateur, comme indiqué.

Il est recommandé de toujours utiliser la découverte OAuth avec Dynamics 365 (en ligne) car les points de terminaison d’autorisation peuvent changer ultérieurement.

Spécifier une ressource OAuth

Lors de l’authentification auprès de Microsoft AzureActive Directory à l’aide du flux de codes d’autorisation OAuth, vous devez fournir une valeur pour la ressource cible. L’adresse Web de l’organisation racine, par exemple https://contoso.crm.dynamics.com, doit être utilisée comme paramètre de chaîne de requête « ressource » dans l’appel au point de terminaison d’autorisation 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 );

Pour plus d'informations :Exemple : application SOAP moderne de bureau OData

Voir aussi

Écrire des applications mobiles et modernes
Guide pas-à-pas : Enregistrer une application Dynamics 365 auprès d'Active Directory
Authentifier les utilisateurs dans Microsoft Dynamics 365
Blog : Présentation d’une nouvelle fonctionnalité dans Azure AD Developer Preview : la bibliothèque d’authentification Azure
Authentification CRM côté serveur à l'aide d'Azure Active Directory

Microsoft Dynamics 365

© 2017 Microsoft. Tous droits réservés. Copyright