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 configuration des revendications est requise pour le déploiement local.
AD FS sur TechNet : Windows Server 2012 R2.
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 :
Bibliothèque d'authentification Microsoft Azure Active Directory
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